java_基础_异常
之前只是了解的最基础的异常形式,没有过多的深入
今天因为一些原因了解了一下
下面来说说异常的几种形式
1.try-catch语句块
代码示例
class test{
public static void main(String[] args) {
try {
int a = 1/0;
System.out.println(a);
}catch(ArithmeticException e) {
e.printStackTrace();
System.out.println(e);
}finally{
//final语句块中最后都会执行(不管有没有异常)
}
}
}
因为分母不能为零,所以此处会报出一个算术异常,这就是try-catch语句块基本形式了
2.抛出异常
代码示例:
class test{
public static void main(String[] args) throws ArithmeticException{
int a = 1/0;
System.out.println(a);
}
}
此处是将异常抛出了,通俗来讲,就是把异常丢给了上一级,由上一级来处理
3.语句中某种条件下抛出异常
代码示例:
class test{
public static void main(String[] args) {
try {
int a = 1;
int b = 0;
if(b==0)throw new ArithmeticException("the denominator connot be zero");
System.out.println(a);
}catch(ArithmeticException e) {
e.printStackTrace();
System.out.println(e);
System.out.println(e.getMessage());
}
}
}
此处,是在判断分母为零之后手动抛出的异常,这种异常可以自定义一句抛出的时候的语句,在catch语句中利用e.getMessage()方法可以获取自定义的语句,直接输出e对象,就是输出异常加上自定义语句,如上示例代码输出的是
java.lang.ArithmeticException: the denominator connot be zero
at Excertion.Test.main(Test.java:12)
java.lang.ArithmeticException: the denominator connot be zero
the denominator connot be zero
这种方法更灵活
4.自定义异常
这种方法就是创建一个异常类,此类必须集成Exception父类,类中可以没有东西,也可以重写父类方法
示例代码:
class MyException extends Exception{
private String message = ""; MyException(String str){
this.message+=str;
}
@Override
public String getMessage() {
// TODO 自动生成的方法存根
return this.message;
} } class test{
public static void main(String[] args) {
try {
int a = 1;
int b = 0;
if(b==0)throw new MyException("the denominator connot be zero");
System.out.println(a);
}catch(MyException e) {
System.out.println(e);
}
}
}
详细如上代码,此不再赘述
注:在try-catch语句块中错误出错代码或者手动抛出异常代码之后的语句不会被执行,但是在try-catch语句块之外之后的语句块会被执行
‘
希望对大家有所帮助
以上
java_基础_异常的更多相关文章
- Java_基础_内存管理
把没几多年,完全忘记了把自己学的东西记录下来了,现在也基本不知道怎么去记录会更好了,不过好歹妹是把住了~也要毕业了,继续回来写东东记录自己的学习...... 一个Java程序在运行时的内存分布主要如上 ...
- Java_注解_异常_01_ElementType cannot be resolved to a variable
一.异常现象: 自定义注解时, @Retention和@Target都能导入进来,但是却报下列错误: RetentionPolicy cannot be resolved to a variable ...
- 32.Java基础_异常
JVM虚拟机默认异常处理机制 Java异常处理: 1.try...catch... 2.throw 1.try...catch... public class test{ public static ...
- java_基础_关于父类继承的问题
关于java父类继承: 首先抽象类有这样几个规则 1.定义为抽象类的类里可以没有抽象方法 2.抽象类里可以有普通的不带abstract关键字的方法 3.抽象类里可以有主main方法 4.抽象类也可以向 ...
- java_基础_注解
注解(annotation),不是注释(comment) 注解可以对程序做说明,这一点和注释一样但是,注解还可以被其他程序读取,这是注释所不具备的 内置注解:@Override(表示重写父类方法)—— ...
- java_基础_接口和抽象类
1.接口 java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征 示例代码: interface MyInterface{ void myMethod(); } class T ...
- java_基础_类加载
类加载:Java命令的作用是启动虚拟机,虚拟机通过输入流,从磁盘上将字节码文件(.class文件)中的内容读入虚拟机,并保存起来的过程就是类加载. 类加载特性 : *在虚拟机的生命周期中一个 ...
- 【Java_基础】JVM内存模型与垃圾回收机制
1. JVM内存模型 Java虚拟机在程序执行过程会把jvm的内存分为若干个不同的数据区域来管理,这些区域有自己的用途,以及创建和销毁时间. JVM内存模型如下图所示 1.1 程序计数器 程序计数器( ...
- Java_基础篇(数组排序)
Java_基础之数组排序(从小到大) 1.冒泡排序: 冒泡排序可以写成两层循环. 每次循环将最大的数值交换到数组的最后一个. 每排序完一次,后面就少比较一次.所以二层循环的判断条件写成:arry.le ...
随机推荐
- PageUtil.java分页工具类
package com.chabansheng.util; /** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * ...
- 一文掌握 Linux 性能分析之内存篇
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面我们已经学 ...
- PowerDesigner的Table视图同时显示Code和Name的方法[转发]
PowerDesigner中Table视图同时显示Code和Name,像下图这样的效果: 实现方法:Tools-Display Preference
- vue.js组件命名
- windows上安装gcc/g++环境(MinGW,msys64等)
1 前言 经过折腾安装gcc环境,记录一下 2 工具 MinGW安装器: 下载地址1:MinGW官网 下载地址2:SourceForge (MinGW w64) 下载地址3:win-builds-1 ...
- iOS 新建xib文件时,最外层view的约束问题
今天用在利用xib实例化view 时, 生成的view的自动布局总是用问题.具体来说,宽和高都不能和父view正确变化.仔细检查,发现下图: 注意这里右上角的Autoresizing部分,并没有设置正 ...
- Jquery点击div之外的地方隐藏当前div
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...
- Flask开发微电影网站(十)
1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm): name = ...
- iOS开发之用到的几种锁整理
1. iOS中的互斥锁 在编程中,引入对象互斥锁的概念,来保证共享数据操作的完整性.每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问对象. 1.1 @sync ...
- jade模板 注意事项
1. jade模板 语法 doctype html html head body header div 2. 添加内容:直接在标签后边加空格 直接写内容 如下: div 我要写的内容 3. ...