设为首页 加入收藏

TOP

Java 异常的处理方式--throws和try catch(一)
2018-08-31 18:27:13 】 浏览:421
Tags:Java 异常 处理 方式 --throws try catch

异常的第一种处理方式throws。


看以下例子:
import java.io.*;
public class ExceptionTest04{
 public static void main(String[] args){
  m1();
 }
 public static void  m1(){
  m2();
 }
 public static void m2(){
  m3();
 }
 public static void m3(){
  new FileInputStream("c:/ab.txt");  //FileInputStream构造方法声明位置上使用throws(向上抛)
  }
}


以上代码编译时出错:
ExceptionTest04.java:16: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
                new FileInputStream("c:/ab.txt");


按照提示修改之后:
import java.io.*;
public class ExceptionTest04{
 public static void main(String[] args){
  m1();
  System.out.println("hello");
 }
 public static void m1(){
  m2();
 }
 public static void m2(){
  m3();
 }
 public static void m3() throws FileNotFoundException{
  new FileInputStream("c:/ab.txt");
 }
}


编译时出错;
ExceptionTest04.java:30: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
            m3();


由此看出,修改之后m3()运行时出现错误,上抛给m2(),以此类推,m2()上抛异常给m1(),m1()上抛异常给main()方法。


因此作出如下修改:
import java.io.*;
public class ExceptionTest04{
 public static void main(String[] args) throws FileNotFoundException{
  m1();
  System.out.println("hello");
 }
 public static void m1() throws FileNotFoundException{
  m2();
 }
 public static void m2() throws FileNotFoundException{
  m3();
 }
 public static void m3() throws FileNotFoundException{
  new FileInputStream("c:/ab.txt");
 }
}


修改之后编译通过,但是System.out.println("hello")并不会执行。


从上面的例子中可以看出,使用throws处理异常不是真正处理异常而是推卸责任,谁调用就会抛给谁。上面的m1方法如果出现了异常,因为采用的是上抛,JVM遇到这个异常就会退出JVM,之后的代码不会执行。因此引入try...catch...方法。修改如下,编译运行通过,并且输出:hello。
import java.io.*;
public class ExceptionTest04{
 public static void main(String[] args) throws FileNotFoundException{
  try{
    m1();
  }  catch(FileNotFoundException e){}
  System.out.println("hello");
 }
 public static void m1() throws FileNotFoundException{
  m2();
 }
 public static void m2() throws FileNotFoundException{
  m3();
 }
 public static void m3() throws FileNotFoundException{
  new FileInputStream("c:/ab.txt");
 }
}


 


捕捉  try...catch...


先来看看语法,


try{


可能出现异常的代码;


}catch(异常类型1 变量){


处理异常的代码;


}catch(异常类型2 变量){


    处理异常的代码;


}......


 


看以下例子:
import java.io.*;
public class ExceptionTest05{
 public static void main(String[] args){
  try{
    //FileNotFoundException
    FileInputStream fis=new FileInputStream("c:/ab.txt");
  }catch(ArithmeticException e){  //捕获的异常是算术异常 
  } 
 } 
}


以上的代码编译无法通过,因为FileNotFoundException没有处理,报错:
ExceptionTest05.java:19: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
                        FileInputStream fis=new FileInputStream("c:/ab.txt");
                                          ^
1 个错误


也就是说可能出现异常的代码和捕获异常的代码必须是

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java Object类的equals()方法 下一篇Java 带缓冲的字节流和字符流

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目