java异常(一)

异常的引入:

               当程序出现一些问题的,可以是严重问题,可以是一种异常,将这些通常为Throwable

Throwable 类是 Java 语言中所有错误或异常的超类
  Throwable
  error

  exception

不抗力因素 : error: 属于严重问题   内存溢出了 (加载页面中大量图片的时候,程序会挂掉---使用第三方的框架去处理:ImageLoader

编译时期异常:

               只要出现的不是运行时期异常,统称为编译时期  日期的文本格式---解析   java.util.Date类型:ParseException:解析异常

         编译时期异常:开发者必须处理!
  运行时期异常 : RuntimeException
         编译通过了,但是开发者代码不严谨(NullPointerExceptino等等...)
  异常的处理分为两种:
  1)try...catch...finally (标准格式) :           捕获异常              常用在项目中
  2)throws ...                             抛出异常               常用在一些小的异常中
 变形格式...
 try...catch...
 try...catch...catch...
 catch....

 try..catch的标准形式:  

 try{

 		一些代码
 		try里面的代码越少越好
 		代码包含了可能会出现问题的代码
 }catch(异常类 异常类对象){
 	try出现异常了,描述的异常刚好就是catch的异常类,就会执行catch里面代码
 	//处理异常
 }
两个异常的处理:
try{
  		可能出现问题的代码
 		int[] arr = {1,2,3} ;
  		Sop(arr[3]);
  		int a = 10 ;
  		int b =0 ;
  		Sop(a/b) ;		
  	}catch(异常类名1 对象名1){
 		//异常处理
  	}catch(异常类名2 对象名2(){ 
  		//异常处理
  }

 注释:两个异常的处理:直接进行处理,不用分别进行try..catch,从上往下走,由小变大(类级)。

Jdk7以后出现另一种方式处理多个异常:
  try{
   可能出现问题的代码;
  }catch(异常类名1 | 异常类名2 |... 对象名){
   处理异常

  }

public class Demo {
	public static void main(String[] args) {
		int a=10;
		int b=0;
		int[] arr= {1,2,3};
		try {
			System.out.println(a/b);
			System.out.println(arr[3]);
		}catch(ArithmeticException|ArrayIndexOutOfBoundsException e) {
			System.out.println("程序出了问题");
		}
	}
}
编译时期异常和运行时期 异常的区别?
  编译时期异常:开发者必须进行显示处理,不处理,编译不能通过,
   运行时期异常:无需进行显示处理,可以像编译时期一样进行处理
   处理异常的第二种方式:使用throws 抛出异常 (跟在方法的后面)
    格式:xxx 返回值  方法名() throws  异常类名{

                  }

   标准格式: try{ ... }catch(异常类 对象){ // 异常处理 } 执行try里面的代码
   如果出现了问题,它会通过代码的问题创建一个异常对象,然后通过异常对象和catch里面的异常类是否一致

   如果一致的情况,就会出现catch里面的代码,执行Throwable里面的方法

   异常中常用的方法:

  public String getMessage() :消息字符串

  注释:如果出错了try中的内容出错了,就会执行catch里面的方法,则会返回一个字符串来说明出错的原因。

  public String toString(): 异常的简短描述 ": ":由冒号和空格组成

  注释:相当于全路径名加上一个“: ”再加上getMessage方法。

  public void printStackTrace():返回值void 直接调用, 包含了消息字符串,还有": "信息描述,具体出现异常的代码定位以及定位      的源码上

  注释:相当于toString方法加上一个源代码和现有代码出错的定位。

  final,finally,finalize的区别?
final 可以修饰类,该类不能被继承;可以修饰变量,该变量是常量;可以修饰成员方法,该方法重写
finalize:gc():运行垃圾回收器,实际是调用finalize()方法,和垃圾回收器有关系
finally:在io,数据库中以及后面对数据库操作(DBUtuls/c3p0/Hibernate/MyBatis)里面中释放资源的,这里面的方法      是必须执行的。



猜你喜欢

转载自blog.csdn.net/wt5264/article/details/80411628