欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常处理(try~catch,throw,throws)

程序员文章站 2022-03-07 22:32:49
...

异常概念:
就是在程序运行时可能出现的一些错误,就是都可以理解为异常,对于异常的分类呢,其实从大体来说可以分为:一种是系统级别的异常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.子类抛出的异常,不能比父类的高级

相关标签: 异常的简单处理