java基础六 [异常处理](阅读Head First Java记录)

在程序运行时,我们不能保证所有服务和方法都是正确的,如果发生问题报错会导致程序崩溃,所以需要对一些可以预见的错误进行异常处理,通过throw去抛出一个异常,然后用try..catch..将要执行的该方法括起来,通过它去捕获该方法可能throw的异常并进行处理

throw:抛出异常(只有方法抛出了异常,才能被try...catch...捕获)

throw new FileIsTooSmallExcepton();

捕获异常:

try{

要执行的方法

}catch(xxException e){

接收到xxException异常时的操作

}catch(Exception e){

接收到Exception的异常时执行的代码,可以catch捕获多个异常,但是范围大的不能在上面,只能在下面(上面的异常不能包含后面catch的异常类型)

}

final{

无论是否有异常都会执行的部分

}

说明:

1.catch()中的是一个Exception类型的异常参数e,这一段只有抛出异常的时候才会执行

2.所有的异常类型都是继承自Exception,而Exception继承自Throwable。所以可以用Exception来捕获所有类型的异常,异常具有方法getMessage()和printStackTrace()

3.如果方法声明了throw异常,则调用该方法时编译器会提示使用try...catch…(RuntimeException除外)

4.如果在catch后加了final,则final{}中的代码肯定会执行,无论是否有异常(如果try或catch有return,则也会先执行final后再return)

5.捕获异常可以写多个catch,捕获不同的异常类型,但是大小很重要,范围大的放下面,如果小的放下面就永远执行不到了

不想处理异常:

如果不想处理异常,那么在方法名后throw可能出现的异常

public void foo() throws ReallyBadException{

调用有风险的方法,这个方法有可能throw一个ReallyBadException异常

}

但是如果main函数也通过throw来躲避异常,如果真的发生异常,程序就出错了。

时间: 2024-08-06 12:23:42

java基础六 [异常处理](阅读Head First Java记录)的相关文章

复习java基础第二天(异常处理)

一.常见的异常类型: public class TestException { public static void main(String[] args) { int i = 10; //数学异常: java.lang.ArithmeticException int j = i / 0; System.out.println(j); int [] scores = new int[]{1, 2, 4, 5}; //数组下标越界异常: java.lang.ArrayIndexOutOfBound

java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的组合(例如客户端在本地,与远程服务器交互) 将class文件生成JAR   指定编译时class类文件的存储目录 打JAR(JavaArchiveFile)包仅需要编译后的class类文件,不需要源代码.java文件.可以通过-d指定编译结果输出的class存放目录 例如:java -d ../cl

夯实Java基础系列7:一文读懂Java 代码块和执行顺序

目录 Java中的构造方法 构造方法简介 构造方法实例 例 1 例 2 Java中的几种构造方法详解 普通构造方法 默认构造方法 重载构造方法 java子类构造方法调用父类构造方法 Java中的代码块简介 Java代码块使用 局部代码块 构造代码块 静态代码块 Java代码块.构造方法(包含继承关系)的执行顺序 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github

java基础三 [深入多态,接口和多态](阅读Head First Java记录)

抽象类和抽象方法 1.抽象类的声明方法,在前面加上抽象类的关键词abstract abstract class canine extends animal{ public void roam(){} } 抽象类除了被继承过之外,是没有用途,没有值,没有目的.类中的方法可以当做子类的合约内容,合约是对其他程序的承诺协议 抽象类中可以带有抽象和非抽象的方法 如果类中有抽象方法,则类必定标识为抽象的. 2.抽象的方法没有实体 (因为方法中的程序代码没有意义.抽象类需要被extend过有意义,抽象方法一

java基础十一[远程部署的RMI](阅读Head First Java记录)

方法的调用都是发生在相同堆上的两个对象之间(同一台机器的Java虚拟机),如果想要调用另一台机器上的对象,可以通过Socket进行输入/输出. 远程过程调用需要创建出4种东西:服务器.客户端.服务器辅助设施.客户端辅助设施 RMI Java的JMI提供客户端和服务器端的辅助设施对象(stub和skeleton,现在实际只用stub文件,客户端和服务端用一个) 辅助设施是实际执行通信的对象,他会让客户端感觉在调用本机,实际上辅助设施类似于代理,将客户端传送的信息通过Socket连接发送给服务端辅助

java基础五 [数字与静态](阅读Head First Java记录)

本章主要讲了静态变量.静态方法,final关键词.以及介绍了怎么对数字和日期进行格式化输出.这里对这些内容进行了整理.本章还介绍了java.util.Date和java.util.Calendar来操作日期,但是这个直接看API就比较清楚,这里就不写了. static static标记过的,与类的实例对象无关 静态方法: 使用static关键词来标记静态方法.有些方法不需要用到类的实例变量,静态变量的代表“一种不依靠实例变量也就不需要对象的行为”.Math就是一个静态方法 调用静态方法:类名.方

java基础九[网络与线程](阅读Head First Java记录)

网络socket连接 Java API的网络功能包(java.net)已经将底层的TCP连接等都封装好了,我们只需要通过Socket对象来建立客户端和服务器的连接,然后客户端能向服务器发送请求,并接收服务端发来的数据即可 服务端和客户端大概的交互如下所示: 编写客户端程序 第一步:建立socket连接 需要客户端和服务器端都建立以下连接 Socket chatSocket=new Socket(“对方IP地址”,TCP端口号); IP类似门牌号,做寻址,找到服务器.端口号是找到这台服务器上的某个

java基础七 [图形用户接口](阅读Head First Java记录)

到目前为止我们接触的都是Java的命令行,但是为了让用户使用,必须有图形化界面,所以这章主要讲的是怎么使用GUI(图形用户接口) 创建一个GUI:javax.swing.* 本章讲的布局相关内容都是javax.swing包下的内容,常用的组件有JFrame,JButton,JRadioButton,JCheckBox,JLabel,JList,JScrollPane,JSlider,JTextArea,JTextField,JTable等 创建GUI第一步:创建window(JFrame) JF

java基础四 [构造器和垃圾回收](阅读Head First Java记录)

本章讲解了对象的创建到被回收的过程,讲述了对象的生命周期 堆(heap)与栈(stack) 实例变量:实例变量是只声明在类下,方法外的变量(实例变量默认值为0/0.0/false,引用的默认值为null) 局部变量:声明在方法中的变量,或方法中的参数.又被成为栈变量 例如: public class test{ int size; public void foof(int a){ int b; barf() } public void barf(){ Duck d =new Duck(24);