异常处理(try~catch,throw,throws)
异常概念:
就是在程序运行时可能出现的一些错误,就是都可以理解为异常,对于异常的分类呢,其实从大体来说可以分为:一种是系统级别的异常error,一种是exception(可以捕获异常),可以自行通过api来看下exeption下有哪些异常的子类,比如说sql异常,数组越界异常,数据格式异常,等等等~
下面我们搞一搞 exception类下的子类异常 :
RunTimeException
RunTimeException异常类下又包括了很多异常子类,空指针啊,数组越界啊等~
简单看一下数组越界的异常和空指针异常的小样例
int arr[]=new int[5];
System.out.println(arr[6]);
运行结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at beifendadai.Dome.main(Dome.java:21)
Object aa=null;
System.out.println(aa.toString());
运行结果:
Exception in thread "main" java.lang.NullPointerException
at beifendadai.Dome.main(Dome.java:21)
我们来看看ERROR,也就是说系统发生了重大的错误异常。
一共可分为3种情况
1.代码编写的有误,java他不能够生成class文件,比如语法中存在错误:
int o=1
他没有写分号,那么就会报错error,即使使用try catch语句也不能捕获~
try…catch
try里面放的是可能要发生运行时异常的代码,catch其实就是对如果出现了异常情况,代码怎么进行处理的意思
下面是一个对算数异常的简单处理
try{
int i =1/0;
}catch(ArithmeticException e) {
System.out.println("发生算数异常,除数不能为0");
}
在代码中有很多很多种异常情况,同时可能会发生多种异常,下面看下多重异常是什么:
try{
int i =1/0;
}catch(ArithmeticException e) {
System.out.println("发生算数异常,除数不能为0");
}catch(NegativeArraySizeException e1) {
System.out.println("空指针异常");
}
//其实就是发生异常时去 catch后面逐一去匹配异常类型,来进行对应的处理
finally代码块
finally代码块其实在是 try catch代码的最后的一道保障,就是不管你程序在前面怎么报错,但是只要是有finally代码块,就得运行finally代码块的代码~
try{
int i =1/0;
}catch(ArithmeticException e) {
System.out.println("发生算数异常,除数不能为0");
}catch(NegativeArraySizeException e1) {
System.out.println("空指针异常");
}finally {
System.out.println("别傻了,人家不在乎你,哈哈");
}
//运行结果: 发生算数异常,除数不能为0
别傻了,人家不在乎你,哈哈
但是也有让finally代码块不执行的时候,比如说 finally代码是异常的,要不就是在try代码块中使用了强行终止代码块的方法,或者是线程死了,突然断电的情况。
异常的处理原则
1.不要乱抛异常,当你不能解决的时候,才能抛出去
2.不要忽略捕捉到的异常
3.不要过度的使用异常
4.不要使用过于庞大的 try…catch
5.子类抛出的异常,不能比父类的高级
推荐阅读
-
javascript中的try catch异常捕获机制用法分析
-
Java连载63-异常处理try...catch...、方法getMessageyu printStackTrace
-
C#中try catch中throw ex和throw方式抛出异常有何不同
-
JS异常处理try..catch语句的作用和实例
-
Python中的异常处理try/except/finally/raise用法分析
-
深入理解python try异常处理机制
-
python中try…except的使用,处理程序异常
-
C#异常处理中try和catch语句及finally语句的用法示例
-
JavaScript语句错误throw、try及catch实例解析
-
Python使用try except处理程序异常的三种常用方法分析