我的学习之路_第四章_异常

一 Object 类

equals方法: 四则运算是不能操作引用类型的 ,而 == 可以操作引用类型,但是在任何时刻只要是用 == 比较引用类型,比较的永远都是地址值.

返回类型 Boolean 比较两个对象是否相等,比较的是地址值

Object 的equals方法比较的是地址值,子类可以重写此方法,比较两个对象的属性值

toString方法:
返回类型String toString()返回对象的字符串表现形式 类型[email protected]+哈希值(地址值)
看一对象的地址值,只能区分是否为同一个对象,没有什么太大的意思,所以一般子类都会重写toString方法
作用: 不再打印地址值,而是打印属性值
实际上当我们打印一个对象的变量名,系统会默认调用此对象的toString方法

二 异常:

异常在java中的本身就是一个类,产生异常就是创建异常对象并抛出一个异常对象.java处理异常的方式是中断处理

1. 异常的分类:

异常的根类是: Throwable ,其下有两个子类: Error 和 Exception .一般所说的异常是指Exception
(1) Error 是无法通过处理的错误.
特点:只能修改代码,否则程序无法执行

(2)Exception 编译时异常,编译时是无法通过编译的
特点:可以进行处理,处理后代码可以继续执行

Exception有一个子类 RuntimeException (运行时异常), 运行时可能会报错,可以不处理

【 1 】处理Exception的方式
使用关键字 throw 在方法内使用 throw 异常的对象

第一种方式: throws 关键字,在方法的申明上使用 申明异常
格式: throws 异常的类名
注意事项:throws 可以声明多个异常,多个异常之间使用 , 隔开
throws 可以声明多个异常共同的父类

第二种方式:
try{
可能出现异常的代码
}catch(异常类名 变量名){
任意内容 一般打印异常对象的信息
}

多catch的异常处理
* try{
可能出现异常的代码
}catch(异常的类名 变量名){

}catch(){

}...

注意事项: 多个catch之间有没有顺序啊?

异常没有直接继承关系 多个catch是没有顺序的

异常有继承关系 多个catch 是有顺序的,越大的越往后放

try{

}catch(){

}finally{
必须执行的代码
无论是否有异常 无限是否处理了异常
}

编译时异常: Exception(父类)
在编译时报错,必须处理,不处理程序不能执行

运行时异常: RuntimeException(子类)
在编译时不报错,运行时才会报错,可以处理,也不可以不处理 不推荐处理
一般情况下 出现运行异常都是代码有问题,要修改代码
当运行时异常被抛出时,程序会中断,所以我们有时会使用运行时异常帮我们中断程序

子父类方法重写时遇到异常的处理问题:

父类方法抛出异常:

子类可以不抛异常
子类也可以抛出异常,但是 子类抛出的异常必须要小于等于父类的异常

父类方法没有抛出异常:

子类也不可以抛出异常 如果子类有异常,只能自己处理,不可以抛出

异常的三个常用方法:

获取异常信息的方法:
返回类型 String getMessage() 打印 异常字符串
返回来兴 String toString() 简短描述异常(打印 异常的类型)
没有返回值 printStackTrace() 最详细的异常信息(打印 异常的类名 字符串 位置 等等)

三. 自定义异常

有些异常,是java中没有提供给我们的,这时候我们就需要用自定义异常来解决.

自定义异常的创建:
1.继承Exception 就是编译时异常 如果继承RuntimeException就是运行时异常
2.添加构造方法

自定义异常的使用: JDK提供的异常如果使用,自定义异常就如何使用

自定义异常的处理: 要么直接 throws 要么 try catch (和JDK提供的异常处理方式一样)

时间: 2024-10-13 21:58:20

我的学习之路_第四章_异常的相关文章

ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一个全面的了解,接下来在本章中,将通过一个案例来熟悉ArcGIS for Desktop的使用,从解决问题的过程中,逐渐适应ArcGIS桌面的界面和操作方式. 本章的练习数据是一个住宅小区的简单平面示意图,需要在已有的基础上把楼房的轮廓补充完整,并加以整饰,完成一幅地图. 1.1 打开地图文档并浏览

《Python编程从入门到实践》_第四章_操作列表

for循环遍历整个列表 pizzas = ['pizzahut','dicos','KFC'] for pizza in pizzas: print ("I like "+ pizza + " pizza!") print ("I really like pizza") 运行结果 I like pizzahut pizza! I like dicos pizza! I like KFC pizza! I really like pizza 注意点

ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 GIS的六大功能是数据获取.存储.查询.分析.表达.输出.在前面的内容里已经介绍了使用ArcGIS进行数据获取.存储.查询.表达和输出的过程,本章将介绍如何在ArcGIS中进行地理分析.分析是GIS的核心和灵魂,是GIS区别于一般的信息系统.CAD或者电子地图系统的主要标志之一. GIS分析,就是研究

ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Desktop的组成部分之一,ArcMap用于数据的浏览.编辑.显示.查询.地图排版等.ArcMap和ArcCatalog一起构成了完整的数据处理与管理分析的功能.在前一章中已经介绍了ArcCatalog的使用,本章中将介绍ArcMap的使用.本章的例子依然使用第4章里的小区平面图示例,但是将从原理的角度做更加

<深入理解C指针>学习笔记和总结 第四章 指针和数组

数组是一个什么玩意: 数组和指针我的理解,有相同之处也有不同之处.因有相同之处,因此一些资料上说,数组和指针本质是相同的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 相同之处: 数组名字和指针名字都代表了一个地址. 如:int num[10];num是数组名.函数开辟了一个存储十个整数类型的空间,而num是他们的首地址. int *p; p=(int *)malloc(10*sizeof(int));类似的,p也指向了首地址. 不同之处是,num[10]中的空间位置是在栈中,而

.Net基础篇_学习笔记_第四天_关系运算符和逻辑运算符

1.关系运算符 包含:>   <   <=  >=   ==  != 以及bool类型中的true和false. 2.逻辑运算符 与 && 或 || 非 ! 注意: 逻辑运算符的两边放的一般都是关系表达式或者bool类型的值 3.复合运算符 +=  -= *= /= 另外:扩充延伸....... 判断是否为闰年? using System; using System.Collections.Generic; using System.Linq; using Syst

Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

我的学习之路_第十四章_反射

类的反射 [获取class文件对象的三种方式]: ● 使用Object类中的方法 getClass() Class<?> getClass() 返回此Object的运行时类. ● 使用类名.class属性 每一个数据类型,基本数据类型和引用数据类型,Java都会为其设置一个class属性 例如: Class class = int.class Class class = String.class Class class = Person.class● 使用Class类中的静态方法forName

小白学习之路,基础四(函数的进阶)

一,内置函数 前面已经认识了函数,对函数都有所了解了,其实呢,在Python中提供了很多内置的函数方便给我们调用.下面会给大家提到一些常用的常用内置函数的用法,当然还有一些其他没讲到的,你也可以看参考文档,深入学习一波.咳咳咳,不多说了,直接进入装逼的代码环节. 更多的内置函数详情请参考http://www.runoob.com/python3/python3-built-in-functions.html 1 abs(-3) #取绝对值 2 all([1,2,5,0]) #当全部为真或者全部不