java 中的异常处理
2018-07-19 05:38:19来源:博客园 阅读 ()
所有的异常都有一个超类throwable;
throwable有两个子类:Exception和error(一般在重大错误,不能够自行恢复);
Exception有两个子类:checked和runtime exception异常;
checked:检查时异常,就是程序代码有的错误会有红色波浪线的异常,在运行之前会提示出来;
runtime exception:运行时有错误会报出的异常如空指针异常和下标越界异常;
进行异常处理有以下两个方法:
1、使用try{} catch(异常种类){}
try 里面一般是一整个功能在一起,有时候需要自己进行判断,有时是程序会自动提示需要加上try.....catch进行处理。
如下面的代码:
int a=3;
int b=0;
System.out.println(a/b);
System.out.println("除法运算");
会产生异常:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at anli.f.main(f.java:7)
这个时候如果不处理会报出如下异常,是虚拟机自动处理之后程序终止,后面的程序就不在执行,如果不想程序就此终止可以加上try...catch进行处理;
try {
int a = 3;
int b = 0;
System.out.println(a / b);
} catch (Exception e) {
// TODO: handle exception
System.out.println("除数不能为0!");
}
System.out.println("除法运算");
输出结果:
除数不能为0!
除法运算
另外还有一种模式:try....catch....finally;不管是否会发生异常都会处理finally的代码块除非用system.exist(0)进行了处理;
示例如下:
try {
int a = 3;
int b = 0;
System.out.println(a / b);
} catch (Exception e) {
// TODO: handle exception
System.out.println("除数不能为0!");
}finally {
System.out.println("finally代码块");
}
System.out.println("除法运算");
结果:
除数不能为0!
finally代码块
除法运算
注意:try可以和catch或者finally分别使用,但是不能单独使用
2、throws和throw;
throws:抛出异常声明,说明有异常,但不进行处理。抛出异常让程序的调用者进行处理,如果一直都不进行try....catch处理就会最终交给虚拟机处理;
throw:抛出一个异常,一般用于抛出一个新的异常或者自定义异常;
用法实例:
public void div(int a,int b) throws Exception{
if(b==0){
throw new Exception("除数不能为零");
}
System.out.println(a/b);
}
f fm=new f();
int a=4;
int b=0;
try {
fm.div(a, b);
} catch (Exception e) {
// TODO Auto-generated catch block
e.getMessage();//获取异常信息可以有这个和下面一行的方法;
e.printStackTrace();
}
System.out.println("除法运算");
结果:
java.lang.Exception: 除数不能为零
at anli.f.div(f.java:21)
at anli.f.main(f.java:10)
除法运算
注意:可以使用多重try....catch........catch;
子类异常在前面,父类异常在后面,一般最后的异常一般是exception;
3、自定义异常类;
可以自定义一个异常继承一个异常类,如exception或者runtime exception;
在使用的时候需要使用throw 抛出一个自定义异常;
如定义一个 AgeException extends Exception{
里面需要继承父类的构造方法,可以自定义生成;
};
在使用的时候只需要在在throw时抛出:
throw new AgeException("除数不能为零");
把上面的代码throw new exception改为上面代码,最后会抛出Age Exception;
4、throw和throws的区别:
a. 作用不同,throws是声明异常,throw是抛出异常;
b.作用位置不同,throws是在类后面声明,可以声明抛出多个异常,throw是抛出一个异常对象;
c.定义字眼不同;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash