Java 异常处理 try catch finally throws throw 的使用和解读(一)
//最近的一个内部表决系统开发过程中,
//发现对异常处理还存在一些模棱两可的地方,
//所以想着整理一下
//主要涉及到:
//1.try catch finally throws throw 的使用和解读
//2.自定义异常的使用
//3.常见的运行异常
/**
* Java 异常处理
* try catch finally throws throw
* @author Ma San
*
*/
public class ExceptionTest {
// 函数可能发生异常时 两种处理办法
// 1.try catch 捕获并处理异常
// 2.throws 声明异常
/**
* try catch 捕获并处理异常
*/
public void function1(int index){
try {
// 以下代码抛出异常,并且被捕获
if(--index<0) throw new Exception("index out of 0");
} catch (Exception e) {
// catch 内处理异常
// TODO: handle exception
}
}
/**
* throws 声明异常
* @throws Exception
*/
public void function2(int index) throws Exception{
// 以下代码抛出异常
if(--index<0) throw new Exception("index out of 0");
}
// 比较 try catch 和 throws 的区别
// 前者会捕获异常并处理,后者只是声明会发生的异常,并不能捕获也不能处理
// throws声明异常,如果被抛出,最终也会被try catch 捕捉处理
// 如果程序中没有try catch 那么 该线程被终止,如果是主线程则程序会被终止
// try catch finally throws throw 语法规则和比较
// 1.try catch :捕获异常
// 2.finally : 任何情况下都会执行的代码
// 3.throws: 声明可能会发生的异常
// 4.throw: 抛出异常
//语法规则:
//(1):try代码块不能单独存在,后边至少有一个catch或者finally代码块
// 以下代码会发生编译错误
public static void main(String args[]) throws Exception{
try{
//代码
}
}
//(2):try代码快后边可以没有catch也可以有多个catch,可以没有finally也可以有一个finally
// 其中,如果catch 和 finally要共存,则finally 必须出现在catch的后面
// (3): try 代码块和catch、finally代码块是不同的作用域
// 在try代码块声明的变量 catch 和 finally不能访问
try
{
// 在try代码块中声明变量
int num = 0;
}
catch (Exception e)
{
num++; // 不合法,编译错误
}finally{
num = 9; // 不合法,编译错误
}
// 定义在try代码块外
int num = 0;
try
{
}
catch (Exception e)
{
num++; // 合法
}finally{
num = 9; // 合法
}
}
Java 异常处理 try catch finally throws throw 的使用和解读(一)的更多相关文章
- 【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
throws是获取异常throw是抛出异常try是将会发生异常的语句括起来,从而进行异常的处理,catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行执行的语句. thro ...
- Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- java异常处理try catch finally
1 异常 1.1 异常处理的作用 在编程时,如果出现文件打开失败,读写文件就会异常退出.如果出现内存溢出错误,程序也会异常退出.如果不能对这些异常进行处理.程序则无法正常运行.所 ...
- java 异常处理try+catch
在整个异常处理机制中,异常在系统中进行传递,传递到程序员认为合适的位置,就捕获到该异常,然后进行逻辑处理,使得项目不会因为出现异常而崩溃.为了捕获异常并对异常进行处理,使用的捕获异常以及处理的语法格式 ...
- JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类, 并提供了良好的接口. 在 Java中,每个异常都是一个对象,它是 Throwable 类或其它子类的实例.当一个方法出 ...
- Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...
- Java异常处理和设计【转】
Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...
- java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...
- 异常处理(try...catch...final 和 throw , throws)
1.传统(弱语言)处理异常方式 原理:利用判断来控制异常出现 publicclass Test01 { publicstaticvoid main(String[] args) { Scanner s ...
随机推荐
- Redis【第一篇】安装
第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. redis 版本 redis-3.2.8 3. 修改内核参数 有三种方式: 1)编辑/etc/sys ...
- STM32按键控制程序
由于最近时间比较匆忙 已经有很久的时间没有写博客了 这次和大家分享的是STM32的一个按键的小程序 他的优点呢也是和上面一个LED一样就是便于移植 更改管脚方便 虽然都是些小程序 但是我觉得他们就像基 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介
很久之前就打算开始写一下自己的技术博客了,实在抽不出时间所以计划一直搁置了,最近项目进度渐渐缓了下来,不那么忙了,也因此开始筹备自己的博客.说到这次博客的主角,也是无心插柳找到的,来源于两年前自己写的 ...
- C++ 友元函数的函数指针
成员函数的指针 讲友元之前先讲普通的成员函数的函数指针 class Std_interface { public: virtual void suspend() = 0; }; // define t ...
- HTML入门
一些说明 写在前面:HTML和CSS,当你了解所有规则后,你应该多写页面并记录你出现的问题,这才是学习HTML和CSS的最佳方法 这是我学习一段时间之后,再次回顾HTML,希望大家也对HTML有不一样 ...
- 监听器如何获取Spring配置文件(加载生成Spring容器)
Spring容器是生成Bean的工厂,我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个 ...
- ERP和MES破冰之路 [普实MES升级中国“智”造]
题记:早在2007年,普实就提出AIO一体化产品概念,全力打造ERP的资源闭环,并取得了良好的市场效应.如今,在制造业的智能生产需求下,生产制造执行系统(MES)成功推向市场. MES是什么? 制造执 ...
- iOS 原生的 UIButton 点击事件是不允许带多参数的,唯一的一个参数就是默认UIButton本身 那么我们该怎么实现传递多个参数的点击事件呢?
UIButton *btn = // create the button objc_setAssociatedObject(btn, "firstObject", someObje ...
- canvas小球动画原理
随着html5发展,canvas标签作为h5革命性的发展标志也越来越流行.canvas标签的强大之处,不仅在于它可以作为一个独立的画布,也可以利用canvas做一些动画而不用导入flash文件.同时, ...
- x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用
Proxmox VE简介 Proxmox VE(Proxmox Virtual Environment) 是一款完全开源虚拟化管理平台,可以管理QEMU/KVM虚拟机和LXC容器.事实上它只是一个前端 ...