处理异常方式

处理异常的方式:
1. try、catch、finally配合使用,三者不能单独使用, try-catch-finally或者 try-catch或者 try-finally方式
2. throws关键字
  声明异常,在方法名和throws后加上抛出的异常,基本格式:
  方法返回值类型  方法名(参数列表) throws 异常类1,异常类2,。。。
通过这种方式声明后,在该类中不必catch异常,不必处理异常,将异常向上传递,而是等到调用该方法的时候catch,即使用该方法的时候需要用try-catch包围该方法用来捕获异常。
  父类中的重写方法可以指定所有的已检查异常或者指定已检查异常的一部分,这些已检查异常时重载方法在其throws子句中声明的。子类在重写该方法是不需要指定重写throws子句的任何已检查异常。
3. throw 异常对象名 或者 throw new 异常类名()
  当一个方法发生异常可以通过throw关键子抛出异常,把异常抛给它的上一级调用者,抛出的可以是异常引用,也可以是异常对象
   一条throw语句一旦被执行,程序立即转入相应的异常处理程序段,他的后面的语句就不执行了(类似return语句),而且他所在的方法也不在返回有意义的值。在一个方法中,throw语句可以有多条,但每次最多只能执行一条。
   当throw一个异常但是没有catch时,异常后的内容不会被执行,最后将会将异常转成系统处理例如:
 
public class Throw {
	public static void throw_do(){
		throw new ArithmeticException();
	}
	public static void main(String[] args) {
		try {
			System.out.println("only try ,no catch!");
			throw_do();
			System.out.println("after throw_do then print");
		} finally{
			System.out.println("finally excuting!");
		}
	}
	
}
输出结果:
 only try ,no catch!
finally excuting!
Exception in thread "main" java.lang.ArithmeticException  

但是如果将throw的异常用catch捕获后,异常将会被处理,
将上面的代码修改
try {
				throw_do();
			} catch (ArithmeticException e) {
				// TODO: handle exception
				System.out.println("catch exception:"+e);
			}
输出结果:only try ,no catch!
catch exception:java.lang.ArithmeticException
after throw_do then print
finally excuting!
 

你可能感兴趣的:(java)