Object 和Throwable
Object
java.lang.Object 所有类的超类
Object里面有的方法所有的类都有
Object方法:
String toString() 返回对象的字符串表现形式
类名 + @ + 哈希值(一种地址值)
一般情况下查看地址值没有意义,所以子类会对此方法重写,返回对象的属性值
打印对象时,默认调用对象的toString()方法
equals()
比较两个独立对象是否相等 (==,比较两个对象的地址值是否相等)
在Object类中:
public boolean equals(Object obj){ //多态
return this == obj;
}
所以如果不重写这个方法,就是比较的两个对象的地址值
重写equals(),一般是比较两个对象的属性值是否相等
注意:A:判断对象类型是否一致,向下转型
B:注意判断空串
Throwable
Error:没有办法处理,只能修改代码
Exception:
thorw 关键字 抛出异常对象(只有对象是Throwable的子类才能用)
一般在方法中使用,后面 new 异常对象类名();
两种处理方式:
throws (声明异常)
一般用在方法的声明后 后面直接跟异常对象名
注意:A:可以声明多个异常对象,中间用 "," 隔开
B:可以声明多个异常对象的共同父类
try {
可能抛出异常的代码;
} catch (可能出现的异常对象名 变量名){
变量名.方法名(); //自定义处理异常的方式
} catch (可能出现的异常对象名 变量名)
...
} finally {
不管怎样都会执行的代码;
}
如果catch没有捕获到异常,就会抛给调用者,如果抛到jvm,程序会中断(由main方法抛给jvm)
多catch处理细节:
捕获到多个异常,异常之间如果有直接的继承关系,那么必须先捕获子类异常(多态的存在)
没有直接继承关系时捕获的异常无序
在重写的方法中,异常处理的细节
A:父类方法中有异常:子类可以不抛出异常,也可以抛出父类抛出异常的子异常
B:父类方法中没有异常:子类方法肯定不可以抛出异常。
C:子类遇到必须抛出比父类抛出异常更大的情况时,只能try..catch自己处理异常,不能向外抛
Exception:编译时异常,编译时不能通过,必须进行声明或捕获(必须在编译之前进行处理,否者报错)
RuntimeException:运行时异常,编译时不报错,运行时出现的异常,可以处理,也可以不处理
推荐不进行处理,因为运行时异常一般都是代码出现了问题,需要修改代码
运行时异常,可以帮助中断程序
继承Exception 就是编译时异常
继承RuntimeException 就是运行时异常
自定义异常定义
两步
1.定义一个类继承Exception或RuntimeException
2.构造方法 调用父类构造(一般调用一个空参构造和一个打印提示信息构造)
自定义异常的处理(如果定义的是运行时异常可以不处理,但是jvm会自己处理)
要么throws 要么try catch
正常处理
异常的三个常用方法
Throwable
String getMessage() 获取异常信息 //打印带参构造方法传入的提示信息
void printStackTrace() 打印异常信息 打印异常的类名 信息 位置
String toString() 获取异常信息包括类名
Object 和Throwable的更多相关文章
- Android中Retrifit使用总结
Android中网络请求框架Retrofit的使用注意事项 1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会. 2.Retro ...
- [RxJava^Android]项目经验分享 --- 失败重试
简单介绍一下业务逻辑:获取字符串,如果获取失败进行10次重试,超出10次未成功视为失败. 模拟获取字符串场景 代码块 class MsgTool { int count; String getMsg( ...
- Spring AOP实例——异常处理和记录程序执行时间
实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...
- Spring AOP深入剖析
一.通过代理工厂模式配置通知 ①.前置通知.后置通知: 定义某接口:ISomeService,并自定义方法 public interface ISomeService { public void tr ...
- 面向切面编程AOP
本文的主要内容(AOP): 1.AOP面向切面编程的相关概念(思想.原理.相关术语) 2.AOP编程底层实现机制(动态代理机制:JDK代理.Cglib代理) 3.Spring的传统AOP编程的案例(计 ...
- Spring aop 记录操作日志 Aspect
前几天做系统日志记录的功能,一个操作调一次记录方法,每次还得去收集参数等等,太尼玛烦了.在程序员的世界里,当你的一个功能重复出现多次,就应该想想肯定有更简单的实现方法.于是果断搜索各种资料,终于搞定了 ...
- 简述jsp之EL表达式和jstl及其使用
Jsp的指令之include指令include指令:代表的是页面的包含. 作用:可以把一些jsp的页面包含在一起,对外展示. 页面的布局,现在已经不用了,现在都用css+div进行布局.include ...
- SpringMVC对异常进行全局处理,并区分对待ajax和普通请求
异常信息应统一进行处理. 程序员开发过程中,应尽量少用try..catch.避免因为catch造成的业务歧义.而在web开发中,普通的页面提交动作,和ajax提交动作,处理方式不一样,因为跳转后直接显 ...
- MMS源码中异步处理简析
1,信息数据的查询,删除使用AsycnQueryHandler处理 AsycnQueryHandler继承了Handler public abstract class AsyncQueryHandle ...
随机推荐
- sublime快捷键汇总
Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所 ...
- MLE极大似然估计和EM最大期望算法
机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么是神,因为神能做很多人做不了的事.那么EM ...
- 通过base64实现图片下载功能(基于vue)
1. 使用场景 当我们处理图片下载功能的时候,如果本地的图片,那么是可以通过canvas获得图片的base64的,方法如下.但是如果图片的url存在跨域问题的话,下面的方法将行不通,这时候我们可以另辟 ...
- NOIp2018集训test-10-6/test-10-7 (联考五day1/day2)
昨天考完月考,明天初赛,dcoi2017级今天终于开始停课准备noip了,大概没有比本弱校停课更晚的学校了吧.本来就够菜了,怕是要凉透哦. DAY1 T1石头剪刀布 据说爆搜随便做,但是我觉得我的O( ...
- 牛客多校第九场 B Quadratic equation 模平方根
题意: 已知 $x+y$ $mod$ $q = b$ $x*y$ $mod$ $q = c$ 已知b和c,求x和y 题解: 容易想到$b^2-4c=x^2-2xy+y^2=(x-y)^2$ 那么开个根 ...
- python从入门到大神---Python的jieba模块简介
python从入门到大神---Python的jieba模块简介 一.总结 一句话总结: jieba包是分词技术,也就是将一句话分成多个词,有多种分词模型可选 1.分词模块包一般有哪些分词模式(比如py ...
- 2019 牛客多校第三场 H Magic Line
题目链接:https://ac.nowcoder.com/acm/contest/883/H 题目大意 给定 N 个不同的整数点,N 为偶数,求一条直线,这条直线能把这 N 个点对半分开,输出这条直线 ...
- shell得到两个文件的差集
第一种方法: grep: [root@hdp05 src]# grep -vxFf leadering.txt leaderNum.txt [root@hdp05 src]# cat leaderin ...
- Android 7.0 IMS框架详解
本文主要讲解IP Multimedia Subsystem (IMS)在Android 7.0上由谷歌Android实现的部分内容.从APP侧一直到Telephony Framework,是不区分CS ...
- org.apache.jasper.JasperException: Unable to compile class for JSP: Invalid character constant
这里不能用单引号,只能为双引号 request.setCharacterEncoding('gb2312'); String user = request.getParameter(" ...