zoukankan      html  css  js  c++  java
  • java 异常处理机制

    又抄袭了一篇文章,其实就是想保存到自己的博客中而已,文章出处:http://www.cnblogs.com/LilianChen/p/4639471.html

    1. 如何捕获异常

    try 

    {

    可能会出现异常的代码段;

    }

    catch(异常类型名 处理该异常对象)

    {

    异常处理代码段;

    }

    复制代码
     1 import java.io.*;
     2 
     3 public class TryCatchTest {
     4 
     5     public static void main(String[] args) {
     6         File file = new File("abc.txt");
     7         int a[] = {1, 2};
     8         
     9         try
    10         {
    11             System.out.println(3/0);
    12         }
    13         catch(ArithmeticException e1)
    14         {
    15             System.out.println("3/0: ");
    16             System.out.println("This is ArithmeticException");
    17         }
    18         
    19         try
    20         {
    21             System.out.println(a[2]);
    22         }
    23         catch(ArrayIndexOutOfBoundsException e2)
    24         {
    25             System.out.println("a[2] is out of Array: ");
    26             System.out.println("This is ArrayIndexOutOfBoundsException");
    27         }
    28         
    29         try
    30         {
    31             BufferedReader input = new BufferedReader(new FileReader(file));
    32         }
    33         catch (FileNotFoundException e3)
    34         {
    35             System.out.println("abc.txt is not found: ");
    36             System.out.println("This is FileNotFoundException");
    37         }
    38         catch(IOException e)
    39         {
    40             System.out.println("This is IOException");
    41         }
    42 
    43     }
    44 
    45 }
    复制代码

    3/0: 
    This is ArithmeticException
    a[2] is out of Array: 
    This is ArrayIndexOutOfBoundsException
    abc.txt is not found: 
    This is FileNotFoundException

    2. 如何抛出异常

    编写代码过程中,如果不想在这段代码中捕捉和处理一个可能出现的异常,那么就需要将这个异常传递出去,传递给调用它的方法去处理该异常。这个时候就需要使用throw 和throws

    • throws语句在方法声明中使用,抛出异常
    • throw语句在方法体内部使用,抛出异常

    注意: 方法体中若使用了throw语句抛出异常,则必须在该方法声明中,采用throws语句来声明该方法体中抛出的异常,同时,throws语句声明抛出的异常,必须是方法体中throw语句抛出的异常或该异常的父类。

    复制代码
     1 import java.io.*;
     2 
     3 public class ThrowTest {
     4     
     5     public void throwTest1() throws ArithmeticException
     6     {
     7         System.out.println(3/0);
     8     }
     9     
    10     public void throwTest2() throws ArrayIndexOutOfBoundsException
    11     {
    12         int a[] ={1,2};
    13         System.out.println(a[2]);
    14     }
    15     
    16     public void throwTest3() throws FileNotFoundException
    17     {
    18         File file=new File("abc.txt");
    19         new BufferedReader(new FileReader(file));
    20     }
    21     
    22     public void throwTest4() throws FileNotFoundException
    23     {
    24         throw new FileNotFoundException("abc.txt");
    25     }
    26 
    27     public static void main(String[] args) {
    28         ThrowTest throwTest=new ThrowTest();
    29         
    30         try
    31         {
    32             throwTest.throwTest1();
    33         }
    34         catch (ArithmeticException e1)
    35         {
    36             System.out.println("3/0: ");
    37             System.out.println("This is ArithmeticException");
    38         }
    39         
    40         try 
    41         {
    42             throwTest.throwTest2();
    43         }
    44         catch(ArrayIndexOutOfBoundsException e2)
    45         {
    46             System.out.println("a[2] is out of Array: ");
    47             System.out.println("This is ArrayIndexOutOfBoundsException");
    48         }
    49         
    50         try
    51         {
    52             throwTest.throwTest3();
    53         }
    54         catch (FileNotFoundException e3)
    55         {
    56             System.out.println("abc.txt is not found: ");
    57             System.out.println("This is FileNotFoundException");
    58         }
    59         
    60         try
    61         {
    62             throwTest.throwTest4();
    63         }
    64         catch (FileNotFoundException e3)
    65         {
    66             System.out.println("abc.txt is not found: ");
    67             System.out.println("This is FileNotFoundException");
    68         }
    69 
    70     }
    71 
    72 }
    复制代码

    3/0: 
    This is ArithmeticException
    a[2] is out of Array: 
    This is ArrayIndexOutOfBoundsException
    abc.txt is not found: 
    This is FileNotFoundException
    abc.txt is not found: 
    This is FileNotFoundException

    3. 自定义异常

    建立自己的异常类,要做的只是根据需要,从Exception类或者从Exception类的子类中继承出需要的类。习惯上,会经常为每一个异常类,提供一个默认的和一个包含详细信息的构造器。需要注意的是,自定义异常类,必须由程序员使用throw语句抛出。

    复制代码
     1 public class MyException {
     2 
     3     public static void main(String[] args) {
     4         String str="2abcde";
     5         
     6         try
     7         {
     8             char c=str.charAt(0);
     9             if(c<'a'||c>'z'||c<'A'||c>'Z')
    10                 throw new FirstLetterException();
    11         }
    12         catch (FirstLetterException e)
    13         {
    14             System.out.println("This is FirstLetterException");
    15         }
    16 
    17     }
    18 
    19 }
    20 
    21 class FirstLetterException extends Exception{
    22     public FirstLetterException()
    23     {
    24         super("The first char is not a letter");
    25     }
    26     
    27     public FirstLetterException(String str)
    28     {
    29         super(str);
    30     }
    31 }
    复制代码

    This is FirstLetterException

    复制代码
     1 public class MyException {
     2 
     3     public static void main(String[] args) throws FirstLetterException{
     4         throw new FirstLetterException();
     5     }
     6 }
     7 
     8 class FirstLetterException extends Exception{
     9     public FirstLetterException()
    10     {
    11         super("The first char is not a letter");
    12     }
    13     
    14     public FirstLetterException(String str)
    15     {
    16         super(str);
    17     }
    18 }
    复制代码

    Exception in thread "main" FirstLetterException: The first char is not a letter
    at MyException.main(MyException.java:5)

    4. 使用finally语句

    在使用try...catch语句是,若try语句中的某一句出现异常情况,那么这部分try语句段中,从出现异常的语句开始,之后的所有语句都不会被执行,直到这部分try语句段结束。

    但是在很多情况下,希望无论是否出现异常,某些语句都需要被执行。那么就可以把这部分代码放在finally语句段中,即使try或catch语句段中含有return语句,程序都会在异常抛出后先执行finally语句段,除非try或catch语句段中执行System.exit()方法,或者是出现Error错误,finally语句才不会被执行而退出程序。

    复制代码
     1 import java.io.*;
     2 
     3 public class FinallyTest {
     4 
     5     public static void main(String[] args) {
     6         File file=null;
     7         BufferedReader input=null;
     8         file=new File("abc.txt");
     9         
    10         try
    11         {
    12             input=new BufferedReader(new FileReader(file));
    13         }
    14         catch(FileNotFoundException e)
    15         {
    16             System.out.print("abc.txt is not found: ");
    17             System.out.println("This is FileNotFoundException");
    18         }
    19         finally
    20         {
    21             System.out.println("This is finally code part.");
    22         }
    23 
    24     }
    25 
    26 }
    复制代码

    abc.txt is not found: This is FileNotFoundException
    This is finally code part.

  • 相关阅读:
    String.prototype.getParm
    IOS—通过ChildViewController实现view的切换
    objective-c IBOutletCollection介绍
    iOS方法类:CGAffineTransform的使用大概
    cocoaPods下载使用记录
    objective-c 中的关联介绍
    操作系统--文件管理
    操作系统--设备管理
    操作系统--存储管理的任务
    操作系统--并发进程死锁
  • 原文地址:https://www.cnblogs.com/nomengfei/p/4644699.html
Copyright © 2011-2022 走看看