今天我们大致学习一下java中关于异常的知识。原来忍住一段时间不联系一个人,真的就不想联系了。

java异常的使用

一、java异常的一些说明

、Throwable 类是Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。
、Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。

RuntimeException表示出现了某种编程错误或者其他不可修复的错误,因为它们通常不会被捕获。它们不会在调用栈中逐层传递,而是默认地在控制台中输出栈追踪信息,并终止线程。

二、通过代码来了解异常

  • IllegalArgumentException是UncheckedException的异常。
public static int divide(int num1, int num2) {
if (num2 == 0) {
throw new IllegalArgumentException("除数不能为0"); // 这种异常是不会try...catch的
}
System.out.println("hello world");
return num1 / num2;
}

运行的效果如下:

Exception in thread "main" java.lang.IllegalArgumentException: 除数不能为0
at com.chenhui.huhx.ExceptionTest.divide(ExceptionTest.java:11)
at com.chenhui.huhx.ExceptionTest.main(ExceptionTest.java:37)
  • IndexOutOfBoundsException是UncheckedException的异常。
public static void arraysOutbounds() {
int[] arrays = new int[]{2, 3, 5};
try {
System.out.println(arrays[4]);
} catch (IndexOutOfBoundsException e) {
System.out.println("数组越界错误");
}
System.out.println("数组异常之后的执行");
}

运行的效果如下:

数组越界错误
数组异常之后的执行
  • FileNotFoundException是checkedException的异常,这类异常必需try...catch或者throw。
public static void checkException() {
try {
throw new FileNotFoundException("文件找不到");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("文件异常之后的执行");
}

运行的效果如下:

java.io.FileNotFoundException: 文件找不到
at com.chenhui.huhx.ExceptionTest.checkException(ExceptionTest.java:29)
at com.chenhui.huhx.ExceptionTest.main(ExceptionTest.java:39)
文件异常之后的执行

整个的测试文件如下:

 package com.chenhui.huhx;

 import java.io.FileNotFoundException;

 /**
* Created by huhx on 2017-04-27.
*/
public class ExceptionTest {
public static int divide(int num1, int num2) {
if (num2 == 0) {
throw new IllegalArgumentException("除数不能为0"); // 这种异常是不会try...catch的
}
System.out.println("hello world");
return num1 / num2;
} public static void arraysOutbounds() {
int[] arrays = new int[]{2, 3, 5};
try {
System.out.println(arrays[4]);
} catch (IndexOutOfBoundsException e) {
System.out.println("数组越界错误");
}
System.out.println("数组异常之后的执行");
} public static void checkException() {
try {
throw new FileNotFoundException("文件找不到");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("文件异常之后的执行");
} public static void main(String[] args) {
// divide(3, 0);
// arraysOutbounds();
checkException();
}
}

异常测试类

友情链接

java基础---->Java中异常的使用(一)的更多相关文章

  1. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  2. Java基础(中)

    面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...

  3. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  4. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  5. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  7. Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)

    Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...

  8. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  9. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  10. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

随机推荐

  1. Mysql User表权限字段说明全介绍

    一:mysql权限表user字段详解: Select_priv.确定用户是否可以通过SELECT命令选择数据. Insert_priv.确定用户是否可以通过INSERT命令插入数据. Update_p ...

  2. drawer navigation, tabhostFragment 默认导向

    问题: 项目结构,在一个抽屉导航中的第一个抽屉中加入了一个tabHostFragment,每次进入项目都是在抽屉导航的默认界面,须要把抽屉划出来再选择某个抽屉. 可是想让APP直接跳转到第一个抽屉界面 ...

  3. 每日英语:Do Successful People Need Sleep?

    George Washington and his Revolutionary War victories. Robert Frost and the composition of 'Stopping ...

  4. UIViewController的生命周期及iOS程序执行顺序 和ios6 处理内存警告

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                                   创建对象,分配空间2.init (initWithN ...

  5. CentOS6.4下Docker应用环境的部署配置

    http://blog.chinaunix.net/uid-619485-id-4973941.html *********************************************** ...

  6. Linux编译安装PHP Mysql Nginx

    安装gcc g++等编译器 yum -y install gcc gcc-c++ automake autoconf libtool glibc make 安装一些lnmp依赖的库 yum -y in ...

  7. _BV()

    #define _BV(bit) (1 << (bit)) _BV()是把1左移N位的函数._BV(7)相当于(1<<7) 常用于位的置位或清零 示例解析: PC7=7; PO ...

  8. C++ const关键字修饰引用

    //const修饰引用的两种用法 #include<iostream> using namespace std; struct Teacher{ ]; int age; }; void S ...

  9. Python之打印变量

    def myprint(v): print v print type(v) try: print v.shape except: try: print len(v) except: pass

  10. virtualbox pxe启动

    在设置——系统中更改启动顺序,优先使用网路启动,如果你的网络环境支持PXE启动,就可以使用网络安装了. 转自: http://blog.csdn.net/huanghuibai/article/det ...