zoukankan      html  css  js  c++  java
  • 异常

     

    异常:异常就是Java程序在运行过程中出现的错误。
    异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。

    异常的体系


    Throwable分三种

    1,编译时异常
    除了RuntimeException及其子类,Exception中所有的子类都是,这种异常必须要处理,要不编译通不过
    2,运行是异常
    RuntimeException及其子类都是,这种异常不用处理,编译会通过,不过这样的程序会有安全隐患,遇到这种异常是需要改代码的
    3,严重错误问题
    用Error进行描述,这个问题发生后,一般不编写针对代码进行处理,而是要对程序进行修正.通常都是由虚拟机抛出的问题

    Throwable中的方法
    String getMessage()
    获取异常信息,返回字符串。

    getMessage() :返回此 throwable 的详细消息字符串。
    class Throwable {
    	String detailMessage;
    	Throwable(){}
    
    	Throwable(String message) {
    		this.detailMessage = message;
    	}
    
    	public String getMessage() {
    		return detailMessage;
    	}
    }
    


    String toString()
    获取异常类名和异常信息,返回字符串。
    覆盖了object里的toString()方法
    void printStackTrace()
    获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
    void printStackTrace(PrintStream s)
    通常用该方法将异常内容保存在日志文件中

    异常处理

                   try...catch...finally
    		格式:
    			try {
    				需要检测的代码;
    			}
    			catch(异常类  变量) {
    				异常处理代码;
    			}
    			...
    			finally {
    				一定会执行的代码;
    					
    			}
    		可以有下面三种搭配形式:
    			try...catch(...)
    			try...finally
    			try...catch(...)...finally            
    

    抛出 throws throw   

    throws:用于标识函数暴露出的异常。thorws用在函数上,后面跟异常类名(可以由多个,用,隔开)。

    throw:用于抛出异常对象。throw用在函数内,后面跟异常对象。new Exception();

    自定义异常

    class MyException extends Exception{
    	MyException(){}
    
    	MyException(Stirng message){
    		super(message); //将信息传递给父类,调用父类封装好的构造方法
    	}
    }
    
    class Student {
    	public void giveAge(int age) throws MyException {
    		if(age>40 || age<16) {
    			//throw new MyExcetpion("A");
    			MyExcepiont my = new MyExcetpion("A");
    			throw my;
    		}
    		else {
    			System.out.println("B");
    		}
    	}
    }
    

     Exception异常的分类
    1,编译时被检测的异常,包括Exception子类RuntimeException以外的所有的异常,如果在函数上声明,调用时,没有处理方式,编译会报错,而且这种异常有针对性的处理方式,是可被处理的
    2,编译时不被检测的异常:包括RuntimeException以及他的所有子类.该异常也称为运行时异常,如果功能声明了此异常,调用者可以不用任何处理方式.通过该异常不需声明,如果发生,就是需要程序停止,对代码进行修正

    总结:

    RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
    子类覆盖父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。
    如果父类抛出了多个异常,子类覆盖父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
    如果被覆盖的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
    当try对应多个catch时,最顶层的异常要放在最下面,反过来分析如果最顶层的异常放在第一行,那根据多态原理,后面的catch就没用了,一般面试的时候会这么问,开发的时候不会抛有继承关系的异常

  • 相关阅读:
    REVERSE-Daily(4)-Elfcrackme2
    DES带IV向量加密解密工具
    Reverse-Daily(3)-DotNetCrackMe1
    Reverse-Daily(2)-wow
    C#:using和new关键字
    python3实现UDP协议的简单服务器和客户端
    python3实现TCP协议的简单服务器和客户端
    深入C++的运算符重载
    NLTK学习笔记(五):分类和标注词汇
    NLTK学习笔记(四):自然语言处理的一些算法研究
  • 原文地址:https://www.cnblogs.com/sooper/p/3417120.html
Copyright © 2011-2022 走看看