• 异常动手脑总结


    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {

    int i=1, j=0, k;
    k=i/j;


    try
    {

    k = i/j; // Causes division-by-zero exception
    //throw new Exception("Hello.Exception!");
    }

    catch ( ArithmeticException e)
    {
    System.out.println("0. "+ e.getMessage());
    }

    catch (Exception e)
    {
    if (e instanceof ArithmeticException)
    System.out.println("0");
    else

    System.out.println(e.getMessage());

    }
    }


    finally
    {
    JOptionPane.showConfirmDialog(null,"OK");
    }

    }

     运行结果:

     

     

    运行结果分析:

    代码报错;显示除零错误;

     

    多层的异常捕获:

    代码部分:

    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {

    try 

    try 

    throw new ArrayIndexOutOfBoundsException(); 

    catch(ArrayIndexOutOfBoundsException e) 

    System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); 
    }

    throw new ArithmeticException(); 

    catch(ArithmeticException e) 

    System.out.println("发生ArithmeticException"); 

    catch(ArrayIndexOutOfBoundsException e) 

    System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 


    }

     运行结果:

     

     

     

    运行结果分析:

    捕获了内层的try catch

     

    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {

    try 
    {
    try 

    throw new ArrayIndexOutOfBoundsException(); 

    catch(ArithmeticException e) 

    System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); 
    }
    throw new ArithmeticException(); 

    catch(ArithmeticException e) {

    System.out.println("发生ArithmeticException"); 

    catch(ArrayIndexOutOfBoundsException e) 

    System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 


    }

     运行结果:

     

     

     

    运行结果分析:

    捕获了外层的try catch

     

    动手动脑代码练习

    代码部分:

    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {

    int result;

    try 
    {

    System.out.println("in Level 1");


    try 
    {

    System.out.println("in Level 2");
    // result=100/0; //Level 2

    try 
    {

    System.out.println("in Level 3");

    result=100/0; //Level 3



    catch (Exception e) 
    {

    System.out.println("Level 3:" + e.getClass().toString());

    }


    finally 
    {

    System.out.println("In Level 3 finally");

    }


    // result=100/0; //Level 2


    }

    catch (Exception e) 
    {

    System.out.println("Level 2:" + e.getClass().toString());

    }
    finally 
    {

    System.out.println("In Level 2 finally");

    }

    // result = 100 / 0; //level 1



    catch (Exception e) 
    {

    System.out.println("Level 1:" + e.getClass().toString());

    }

    finally 
    {

    . System.out.println("In Level 1 finally");

    }

    }

     运行结果:

     

    今天练习异常处理

    下面是代码部分:

    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {
    try
    {


    System.out.println("in main");

    throw new Exception("Exception is thrown in main");

    //System.exit(0);


    }

    catch(Exception e)

    {

    System.out.println(e.getMessage());

    System.exit(0);

    }

    finally

    {

    System.out.println("in finally");

    }

    }

     运行结果:

     

     

    跟踪异常传播:

    下面是代码部分:

    package lianxi;
    import javax.swing.*;
    public class bo {

    public static void main(String[] args) {
    try 
    {
    method1();
    }
    catch ( Exception e ) 
    {
    System.err.println( e.getMessage() + " " );
    e.printStackTrace();
    }
    }
    public static void method1() throws Exception
    {
    method2();
    }

    public static void method2() throws Exception
    {
    method3();
    }

    public static void method3() throws Exception
    {
    throw new Exception( "Exception thrown in method3" );
    }
    }

     

    运行结果:

     

     

     运行结果分析

    代码报错

     

    抛出多个受控异常的方法:

    代码部分:

    package lianxi;
    import java.io.*;
    public class bo
    {
    public static void main( String args[] )
    {
    try 

    throwsTest(); 

    catch(IOException e) 

    System.out.println("捕捉异常"); 
    }
    }

    private static void throwsTest() throws ArithmeticException,IOException 

    System.out.println("这只是一个测试"); 
    // 程序处理过程假设发生异常
    throw new IOException(); 
    //throw new ArithmeticException(); 
    }
    }

     运行结果:

     

     

     运行结果分析:

    成功抛出异常并捕捉异常;

    子类抛出受控异常的限制:

    代码部分:

    import java.io.*;


    public class OverrideThrows
    {
    public void test()throws IOException
    {
    FileInputStream fis = new FileInputStream("a.txt");
    }
    }
    class Sub extends OverrideThrows
    {
    //如果test方法声明抛出了比父类方法更大的异常,比如Exception
    //则代码将无法编译……
    public void test() throws FileNotFoundException
    {
    //...
    }
    }

    异常处理连:

    代码部分:

    /**
    * 自定义的异常类
    * @author JinXuLiang
    *
    */
    class MyException extends Exception
    {
    public MyException(String Message) 
    {
    super(Message);
    }
    public MyException(String message, Throwable cause) 
    {
    super(message, cause);
    }
    public MyException( Throwable cause) 
    {
    super(cause);
    }

    }

    public class ExceptionLinkInRealWorld 
    {
    public static void main( String args[] )
    {
    try 
    {
    throwExceptionMethod(); //有可能抛出异常的方法调用
    }
    catch ( MyException e )
    {
    System.err.println( e.getMessage() );
    System.err.println(e.getCause().getMessage());
    }
    catch ( Exception e )
    {
    System.err.println( "Exception handled in main" );
    }
    doesNotThrowException(); //不抛出异常的方法调用
    }

    public static void throwExceptionMethod() throws MyException
    {

    try 
    {
    System.out.println( "Method throwException" );

    throw new Exception("系统运行时引发的特定的异常"); // 产生了一个特定的异常
    }
    catch( Exception e )
    {
    System.err.println(
    "Exception handled in method throwException" );
    //转换为一个自定义异常,再抛出
    throw new MyException("在方法执行时出现异常",e);

    }
    finally 
    {
    System.err.println(
    "Finally executed in throwException" );
    }

    // any code here would not be reached
    }

    public static void doesNotThrowException()
    {
    try 
    {
    System.out.println( "Method doesNotThrowException" );
    }
    catch( Exception e )
    {
    System.err.println( e.toString() );
    }
    finally 
    {
    System.err.println(
    "Finally executed in doesNotThrowException" );
    }

    System.out.println(
    "End of method doesNotThrowException" );
    }
    }

     这就是典型的异常处理代码模板。

  • 相关阅读:
    第01组 Beta冲刺(5-5)
    第01组 Beta冲刺(4-5)
    第01组 Beta冲刺(3-5)
    第01组 Beta冲刺(2-5)
    第01组 Beta冲刺(1-5)
    软工实践个人总结
    第03组 每周小结 (3/3)
    第03组 每周小结 (2/3)
    第03组 每周小结 (1/3)
    第03组 Beta冲刺 总结
  • 原文地址:https://www.cnblogs.com/092e/p/14176727.html
Copyright © 2020-2023  润新知