当前位置:网站首页 > Java基础 > 正文

java异常的捕获

Java内置了一套异常处理机制,总是使用异常来表示错误。

一,使用try……catch来捕获错误

异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了:

try { 
    String s = processFile(“C:\\test.txt”); // ok: } catch (FileNotFoundException e) { 
    // file not found: } catch (SecurityException e) { 
    // no read permission: } catch (IOException e) { 
    // io error: } catch (Exception e) { 
    // other error: } 

请添加图片描述
Java规定:

必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。 不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。 
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException { 
    ... } 
try { 
    return s.getBytes("GBK"); } catch (UnsupportedEncodingException e) { 
    // 先记下来再说: e.printStackTrace(); } 

所有异常都可以调用printStackTrace()方法打印异常栈,这是一个简单有用的快速打印异常的方法。

二,多个catch和finally

public static void main(String[] args) { 
    try { 
    process1(); process2(); process3(); } catch (UnsupportedEncodingException e) { 
    System.out.println("Bad encoding"); } catch (IOException e) { 
    System.out.println("IO error"); } finally { 
    System.out.println("END"); } } 

三,异常的传播

和js中一样,异常会不断向上传播,直到被try……catch捕获

public class Main { 
    public static void main(String[] args) { 
    try { 
    process1(); } catch (Exception e) { 
    e.printStackTrace(); } } static void process1() { 
    process2(); } static void process2() { 
    Integer.parseInt(null); // 会抛出NumberFormatException } } 

四,空指针异常NullPointerException

空指针异常,就和js中的undefined差不多啦.

 try { 
    String s = null; System.out.println(s.toLowerCase()); } catch (NullPointerException e) { 
    e.printStackTrace(); } 

五,日志的打印

像前端的开发,我们打印日志直接使用console,后端则使用System.out.println(),但是后端是起一个服务给另一方调用,打印显得很麻烦,我们希望有文件可以追溯调用情况.
对于日志的打印.
我们常用的是log4j

到此这篇java异常的捕获的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

  • 上一篇: java泛型
  • 下一篇: java核心类
  • 版权声明


    相关文章:

  • java泛型2024-11-28 19:45:09
  • java spring调用db.properties外部文件时出错2024-11-28 19:45:09
  • macbook安装低版本的jdk,提示“Oracle 的 Java 要求 Mac OS X 10.7.3 或更高版本”2024-11-28 19:45:09
  • idea创建java的maven聚合工程2024-11-28 19:45:09
  • 线上一次排错:JAVA程序占用CPU超过100%2024-11-28 19:45:09
  • java核心类2024-11-28 19:45:09
  • java面向对象基础2024-11-28 19:45:09
  • java基础-(七)-springBoot项目的helloworld2024-11-28 19:45:09
  • java基础-(六)-使用 Spring Initializr 创建springBoot项目2024-11-28 19:45:09
  • java基础-(四)-Maven安装与配置2024-11-28 19:45:09
  • 全屏图片