黑马程序员——java学习之异常处理

时间:2022-10-05 00:45:00

    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

       java中异常处理的部分并不难,但是有很多地方需要注意,针对于自己来说主要是自定义异常类部分,这块有些概念比较容易混淆。下面的部分主要是自己在学习过程中做得学习笔记。有些部分多次强调,主要就是理解起来有困难,所以多写两遍,也多理解两遍。

    异常:程序运行时出现的不正常的现象。异常的处理机制:try{需要检测的代码}catch(异常类  变量){处理方法}finally{一定会执行的语句}。

    throws Exception在功能上标示该功能可能出现问题。   如果不声明的话在运行时会出现问题。多个catch块出现时父类异常放在最下面,不然 下面的无法处理。   catch要把具体的异常解决细化。给出具体解决方案。

    自定义异常:要向成为异常类,类要继承异常Exception。extends Exception。     方式:手动抛出自定义异常处处理方式---throw new 异常对象。     函数内部出现throw抛出的异常对象,那么就要做出处理动作。1:在内部try catch 处理。2:函数上声明。    函数内抛,函数上要声明。     自定义异常为什么继承exception---- 异常类与异常对象都要抛出,他们具有可抛型,而这个可抛型式throwable独有的。     ##throws和throw的区别:1,位置上throws使用在函数上,而throw使用在函数内。2,throws后面跟的是异常类,throw后面跟异常对象。     如果在函数内上抛出RuntimeException,函数上可以不用声明。  如果函数上声明了,调用者不用处理,也可以编译通过。     RuntimeException及其子类是编译时不被检测的异常。    异常出现时能处理就要标示出来,继承Exception。     注意:throw也是函数结束标示,与return一样,下面的都执行不到。     继承RuntimeException  方法不需要抛出异常,主函数调用也不需要处理。     软件开发是模块式开发,分层处理,需要包,需要异常,需要继承等。     异常类的父类子类中,子类方法的异常,必须进行try处理,不能抛。     finally资源关闭,比如说数据库的操作上,数据库需要被关闭。     异常体系:Throwable                         ---Error                        ---Exception     ----RuntimeException      总结:当函数内容有throw抛出异常对象,没有进行try处理,必须在函数上声明,否则编译失败。RuntimeException除外。函数上不需要声明。如果函数上声明了异常,调用者需要进行处理,处理方式为可抛可try。 异常的两种:编译时异常,运行时异常。编译时异常在编译时如果没有抛没有try,那么编译失败。该异常被标示代表可以被处理,而运行时异常,在编译时不需要处理,编译器不检查,该异常发生,建议不处理,让程序停止,需要对代码进行修正。 自定义异常:自定义类继承Exception或者RuntimeException   这是为了让该自定义类可以抛,让该类具备操作异常的共性。 格式为:class MyException extends Exception              {MyException(String msg){              super(msg); } } 另外:当捕捉到的异常在本功能处理不了,可以继续catch抛出。   权限:protected  保护权限   权限范围:public protected default private   一个java文件中 出现两个以上的公有类。   import  导包  方面包之间的类名调用。    为了避免类重名有包名。定义包名不能重名。包名定义用url定义/   由于自定义异常类重要,而且个人理解上有困难,在这里摘出代码以便加深理解。
class Throwable
{
private String message;
Throwable(String message)
{
this.message = message;
}

public String getMessage()
{
return message;
}
}

class Exception extends Throwable
{
Exception(String message)
{
super(message);
}
}
    明天开始学习java中多线程的问题,再接再厉。