第三次学JAVA再学不好就吃翔(part96)--异常
学习笔记,仅供参考,有错必纠
文章目录
- 异常
- 异常概述
- JVM如何处理异常
- 异常处理方式(try...catch)
- Throwable类的几个常见方法
- 常用方法
- 举个例子
异常
异常概述
- 异常概述
异常就是Java程序在运行过程中出现的错误。
- Throwable类
Throwable
类是java.lang 包下的一个类,它是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw
语句抛出。类似地,只有此类或其子类之一才可以是 catch
子句中的参数类型。
它有两个直接子类:Error和Exception
- Exception类
Exception是java.lang 包下的一个类,Exception
类及其子类是 Throwable
的一种形式,它指出了应用程序想要捕获的条件。
直接已知子类有:
AclNotFoundException, ActivationException, AlreadyBoundException,
ApplicationException, AWTException, BackingStoreException,
BadAttributeValueExpException, BadBinaryOpValueExpException,
BadLocationException, BadStringOperationException,
BrokenBarrierException, CertificateException, ClassNotFoundException,
CloneNotSupportedException, DataFormatException,
DatatypeConfigurationException, DestroyFailedException,
ExecutionException, ExpandVetoException, FontFormatException,
GeneralSecurityException, GSSException, IllegalAccessException,
IllegalClassFormatException, InstantiationException,
InterruptedException, IntrospectionException,
InvalidApplicationException, InvalidMidiDataException,
InvalidPreferencesFormatException, InvalidTargetObjectTypeException,
InvocationTargetException, IOException, JAXBException, JMException,
KeySelectorException, LastOwnerException, LineUnavailableException,
MarshalException, MidiUnavailableException, MimeTypeParseException,
MimeTypeParseException, NamingException,
NoninvertibleTransformException, NoSuchFieldException,
NoSuchMethodException, NotBoundException, NotOwnerException,
ParseException, ParserConfigurationException, PrinterException,
PrintException, PrivilegedActionException, PropertyVetoException,
RefreshFailedException, RemarshalException, RuntimeException,
SAXException, ScriptException, ServerNotActiveException,
SOAPException, SQLException, TimeoutException,
TooManyListenersException, TransformerException, TransformException,
UnmodifiableClassException, UnsupportedAudioFileException,
UnsupportedCallbackException, UnsupportedFlavorException,
UnsupportedLookAndFeelException, URIReferenceException,
URISyntaxException, UserException, XAException, XMLParseException,
XMLSignatureException, XMLStreamException, XPathException
我们看到Exception类有一个直接子类为RuntimeException,这是运行时异常,我们经常会见这个异常类。
JVM如何处理异常
main函数接收到异常时,有两种处理方式:
- 自己将该问题处理,然后继续运行;
- 自己没有针对的处理方式,只有交给调用main函数的jvm来处理,jvm有一个默认的异常处理机制,会对该异常进行处理,并将该异常的名称、异常的信息、异常出现的位置打印在了控制台上,同时停止程序运行。
异常处理方式(try…catch)
- 一个catch
package com.guiyang.bean;public class Demo2_Exception {public static void main(String[] args) {Demo2 demo2 = new Demo2();try {int ans = demo2.div(10, 0); //ArithmeticExceptionSystem.out.println(ans);} catch (ArithmeticException e) {System.out.println("被除数不为0");}System.out.println("我执行啦~");}}class Demo2 {public int div(int a, int b) {return (a / b);}
}
输出:
被除数不为0
我执行啦~
- 多个catch
package com.guiyang.restudy3;public class D3Exception {public static void main(String[] args) {int a = 10;int b = 0;int[] arr = {11,22,33,44,55};try {System.out.println(a / b);System.out.println(arr[10]);arr = null;System.out.println(arr[0]);} catch (ArithmeticException e) {System.out.println("除数不能为零");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("索引越界了");} catch (Exception e) { System.out.println("出错了");}System.out.println("我输出啦~");}
}
输出:
除数不能为零
我输出啦~
注意,try后面如果跟多个catch,那么子类异常应该放前面,父类异常应该放后面,且根据多态的原理,如果父类的放前面,就会将所有的子类对象接收,则在父类异常后面的catch就没有意义了。
Throwable类的几个常见方法
常用方法
- getMessage
public String getMessage()
返回此throwable的详细消息字符串。
- toString
public String toString()
返回此 throwable 的简短描述。结果是以下字符串的串联:
- 此对象的类的
name
:
(冒号和一个空格)- 调用此对象
getLocalizedMessage()
方法的结果,如果getLocalizedMessage
返回null
,则只返回类名称。
举个例子
输入:
package com.guiyang.restudy3;public class D5Throwable {public static void main(String[] args) {try {System.out.println(1/0);} catch (Exception e) {System.out.println(e.getMessage());//获取异常信息System.out.println(e.toString());//打印异常类名和异常信息}}
}
输出:
/ by zero
java.lang.ArithmeticException: / by zero
第三次学JAVA再学不好就吃翔(part96)--异常相关推荐
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part106)--字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...
- 第三次学JAVA再学不好就吃翔(part46)--Scanner类
学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...
- 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part115)--多线程
学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...
- 第三次学JAVA再学不好就吃翔(part113)--对象操作流
学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...
- 第三次学JAVA再学不好就吃翔(part104)--flush和close
学习笔记,仅供参考,有错必纠 flush和close flush方法 对于写出数据来说,当缓冲区满了之后,缓冲区中的数据会自动写出,但是当缓冲区没有满时,调用flush方法,那么缓冲区就会被刷新,数据 ...
最新文章
- js 各种常用js验证
- 如何在企业推行OKR?
- 使用lisp函数控制cursor
- window.open使用
- 以太坊搭建,不能使用puppeth 创建初始块,报错Fatal: Failed to write genesis block: unsupported fork ordering: eip15
- 创建一个CentOS 7的模板
- 春节临近|传统彩色手绘年画素材,满满东方韵味
- excel 区间人数柱状图_原来用Excel做数据分析如此简单!
- 几款好看的css表格
- keras深度学习之猫狗分类三(特征提取)
- 精简、root康佳电视升级包LED37R5200PDF(晨星Mstar),工具mstar-bin-tool等
- 表白代码收藏馆,谁说程序猿不懂浪漫
- 光纤收发器和交换机之间有什么区别?
- python删除csv某一行_python删除csv行
- Miracle密码算法开源库(四)分析 :mrarth2.c
- 第五届蓝桥杯B组java—猜字母
- 《SolidWorks 2014中文版机械设计从入门到精通》——导读
- vhdl加法器和减法器_半减法器和全减法器的设计
- 【老九学堂】【C语言】CodeBlocks安装文档
- 中国人寿保险软件开发机试题 java实现
热门文章
- windows下面sublime无法粘贴复制的问题解决(转)
- virtualenv在windows10下面使用的注意事项
- tensorflow学习笔记:tf.control_dependencies,tf.GraphKeys.UPDATE_OPS,tf.get_collection
- 3.3 参数估计:贝叶斯估计
- android 环信消息红点,环信3.0获取会话消息列表
- python socket tcp远控_Python3实现ICMP远控后门(中)之“嗅探”黑科技
- python系统目录_Python创建系统目录的方法
- Linux下实现脚本监测特定进程占用内存情况
- [开源]Dapper Repository 一种实现方式
- 调用百度API写了一个js翻译小工具