黑马程序员----异常

------<a href=" http://www.itheima.com " target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


异常

(1)程序运行过程中的不正常现象就叫异常。

(2)导致程序运行不正常的现象有很多,所以,就有很多的异常对象。

   而这些异常对象存在着共性的内容,所以,可以不断的进行抽取。最终形成了异常的体系结构。

   异常体系的根类是:Throwable

   Throwable:

       |--Error:重大的问题,我们处理不了。也不需要编写代码处理。比如说内存溢出。

       |--Exception:一般性的错误,是需要我们编写代码进行处理的。

       |--RuntimeException:运行时异常,这个我们也不需要处理。

                    其实就是为了让他在运行时出问题,然后我们回来修改代码。

(3)异常的分类

异常有两种:

  1、编译时被检测异常:

     该异常在编译时,如果没有处理(没有抛也没有try),编译失败。

     该异常被标识,代表这可以被处理。

  2、运行时异常(编译时不检测)

     在编译时,不需要处理,编译器不检查。

     该异常的发生,建议不处理,让程序停止。需要对代码进行修正。

(4)异常体系的特点:

     异常体系中的所有类及其子类对象都具备可抛性。也就是说可以被throw和throws关键字所操作。

(5)main方法是如何处理异常的。

   A:在main里面编写代码进行处理

   B:交给jvm自己进行处理。采用的是jvm的默认处理方式。

  其实就是相当于调用了异常对象的printStackTrace()方法。

(6)Throwable类的学习

getMessage():获取异常信息,返回字符串。

toString():获取异常类名和异常信息,返回字符串。

printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。

(7)异常的处理·

A:try...catch...finally

基本格式:

try{

可能出现异常的代码

}

catch(异常对象){

异常处理代码

}

finally{

释放资源

}

变形格式:

try...catch

try...catch...catch...

try...catch...catch...finally

  多个异常同时被捕获的时候,记住一个原则:

先逮小的,再逮大的。

  finally:永远被执行,除非退出jvm。System.exit(0);


两个小案例: 

 1、final,finally,finalize区别。

   final是最终的意思。它可以用于修饰类,成员变量,成员方法。

   它修饰的类不能被继承,它修饰的变量时常量,它修饰的方法不能被重写。

 

   finally:是异常处理里面的关键字。

   它其中的代码永远被执行。特殊情况:在执行它之前jvm退出。System.exit(0);

 

   finalize:是Object类中的一个方法。

   它是于垃圾回收器调用的方式。

 

 2、假如catch中有return语句, finally里中的代码会执行吗?

   是在return前,还是在return后呢?

   会,在return前执行finally里面的代码。

(8)Exception和RuntimeException的区别

A:Exception:一般性的错误,是需要我们编写代码进行处理的。

B:RuntimeException:运行时异常,这个我们也不需要处理。

           其实就是为了让他在运行时出问题,然后我们回来修改代码。

在用throws抛出一个的时候,如果这个异常是属于RuntimeException的体系的时候,

我们在调用的地方可以不用处理。(RuntimeException和RuntimeException的子类)

在用throws抛出一个的时候,如果这个异常是属于Exception的体系的时候,

我们在调用的地方必须进行处理或者继续抛出。

(9)自定义异常

定义类继承Exception或者RuntimeException

1,为了让该自定义类具备可抛性。

2,让该类具备操作异常的共性方法。

class MyExcepiton extends Exception{
<span style="white-space:pre">	</span>MyExcepiton(){}
 
<span style="white-space:pre">	</span>MyExcepiton(String message){
<span style="white-space:pre">		</span>super(message);
<span style="white-space:pre">	</span>}
}
 
class MyException extends RuntimeException{
<span style="white-space:pre">	</span>MyExcepiton(){}
 
<span style="white-space:pre">	</span>MyExcepiton(String message){
<span style="white-space:pre">		</span>super(message);
<span style="white-space:pre">	</span>}
}


(10)throws和throw的区别

A:有throws的时候可以没有throw。

   有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。

B:throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开

   throw用于方法体中,其后跟的是一个异常对象名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑程序员的Git课件包括以下内容: 1. 开发中的实际场景,如备份代码、还原协同开发、追溯代码的编写人员和间等[1.1]。 2. 版本控制器的方式,包括集中式版本控制工具和分布式版本控制工具[1.2]。集中式版本控制工具的例子有SVN和CVS,而分布式版本控制工具的例子是Git。 3. Git的工作流程图[1.3]。 4. Git的常用操作,例如拉取(pull),将远程库的内容拉到本地并进行合并。 5. Git课件中还可能包括其他内容,如Object类、常用API、Collection、泛型、List、Set、数据结构、Map、异常处理、线程、同步、等待与唤醒案例、线程池、Lambda表达式等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Git学习笔记1(黑马程序员)—— Git概述](https://blog.csdn.net/kuaixiao0217/article/details/124575818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [黑马程序员-Java语言进阶-源码、教程笔记.zip](https://download.csdn.net/download/YangYF1997/13704805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值