iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java异常类型及处理
  • 443
分享到

Java异常类型及处理

2024-04-02 19:04:59 443人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、异常定义二、异常的结构和分类三、异常的处理和捕获四、自定义异常五、异常的应用1.打印堆栈2.弹出流程六、注意点总结一、异常定义 异常就是“意外、例外”的意思,也就是非正常情况

一、异常定义

异常就是“意外、例外”的意思,也就是非正常情况。异常本质上是程序上的错误,包括程序逻辑错误和系统错误。异常的处理基本上就是用来兜底的,也是程序开发中程序不愿意看到的。异常最基本的信息就是线程的堆栈信息。

二、异常的结构和分类

图片

Throwable主要分为Error和Exception。

错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,躺平解决就好,不要反抗。常见的错误有下面这些

图片

异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心,能在程序中解决的都不叫事。常见的异常有这么多。

图片

三、异常的处理和捕获

异常想要处理肯定要先捕获到异常才可以,怎么捕获异常呐,Java给我提供了几个关键字,每个关键字怎么用呐?

1、try,catch 就是直接捕获异常,catch 内的异常类型是能捕获的类型,一般如果有多个异常,从上到下的顺序是异常范围越来越大。注:ErrorCodeException的定义可以参考自定义异常。


  public static void second(String[] args) {
      try {
          throw new ErrorCodeException("1123");
      } catch (ErrorCodeException e) {
          e.printStackTrace();
      }catch (Exception e){
          e.printStackTrace();
      }
  }

2、try catch finally 增加了finally关键字,就是在异常之后还能做一些事情,比如常见的关闭输入流,输出流,是程序最后的倔强。


public static String readFileContent(String fileName) {
  File file = new File(fileName);
  BufferedReader reader = null;
  StringBuffer sbf = new StringBuffer();
  try {
      reader = new BufferedReader(new FileReader(file));
      String tempStr;
      while ((tempStr = reader.readLine()) != null) {
          sbf.append(tempStr);
      }
      reader.close();
      return sbf.toString();
  } catch (IOException e) {
      e.printStackTrace();
  } finally {
      if (reader != null) {
          try {
              reader.close();
          } catch (IOException e1) {
              e1.printStackTrace();
          }
      }
  }
  return sbf.toString();
}

3、throw 主要用来创建一个异常,因为程序中可能需要抛出一个异常,比如我们游戏服务器游戏逻辑验证客户端参数不通过,会主动抛出一个自定义的异常

4、throws 主要用在方法签名上,当我们读写文件或者反射的时候,如果不用try catch 就会发现方法签名后有一堆的异常需要处理。异常会继续上抛给上层的调用方法,直至有方法处理或者给系统。

四、自定义异常

当Java内置的异常都不能明确的说明异常情况的时候,需要创建自己的异常。

如果要自定义异常类,则继承Exception类即可。可以在类中增加一些自己的处理,在创建异常的时候传入,在处理异常的地方,可以根据具体的内容进行处理。可以看下下面的弹出流程应用。



public class ErrorCodeException extends Exception {
   //错误码
   private String errorCode;
   //构造函数
   public ErrorCodeException(String errorCode){
       super(errorCode);
       this.errorCode = errorCode;
  }
   public String getErrorCode() {
       return errorCode;
  }
}

五、异常的应用

游戏开发中,每个协议的处理都会验证参数的是否合理,如果发现参数不合理,我们可以抛出一个自定义的参数异常,在同一的入口处进行捕获,解析出其中的错误码,直接发给客户端。避免了一层一层的函数返回。

1.打印堆栈

有时候在调试代码的过程中,因为函数的调用处太多,游戏不好断点,我们可以在想要知道函数的调用路径的情况下,可以随意抛出一个异常,系统会打印出调用堆栈,帮忙定位问题。是不是又获得一个小技巧。



public class Aain {
   public static void first(String[] args) throws Exception {
       second(args);
  }
   public static void second(String[] args) throws Exception {
       throw new Exception("1123");
  }
   public static void main(String[] args) throws Exception {
           first(args);
  }
}

2.弹出流程



public class Aain {
  public static void first(String[] args) throws ErrorCodeException {
      second(args);
  }
  public static void second(String[] args) throws ErrorCodeException {
      third(args);
      System.out.println("1111");
  }
  public static void third(String[] args) throws ErrorCodeException {
      throw new ErrorCodeException("1123");
  }
  public static void main(String[] args){
      try {
          first(args);
      } catch (ErrorCodeException e) {
          e.printStackTrace();
      }
  }
}

图片

从上面大堆栈打印可以看到,打印的语句没有执行,在游戏服务器的消息处理处捕获一个ErrorCodeException,如果消息处理函数抛出这个异常,在入口处会捕获并解析其中的错误码返回给客户端,可以避免一层一层的返回函数

六、注意点

1、Java程序可以是多线程的。每一个线程都是一个独立的执行流,独立的函数调用栈。如果程序只有一个线程,那么没有被任何代码处理的异常 会导致程序终止。如果是多线程的,那么没有被任何代码处理的异常仅仅会导致异常所在的线程结束

2、finally 不具有再次处理异常的能力

3、不要只捕获异常而不处理异常,就会发现不了问题。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多文章!

--结束END--

本文标题: Java异常类型及处理

本文链接: https://www.lsjlt.com/news/130386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java异常类型及处理
    目录一、异常定义二、异常的结构和分类三、异常的处理和捕获四、自定义异常五、异常的应用1.打印堆栈2.弹出流程六、注意点总结一、异常定义 异常就是“意外、例外”的意思,也就是非正常情况...
    99+
    2022-11-12
  • Java异常类型及处理详情
    目录一、异常处理的关键字1、throw2、throws异常结构为: Throwable 为顶级父类 子类Error为严重报错 , 子类Exception就是我们所说...
    99+
    2022-11-12
  • Java异常类型及处理方法
    这篇文章主要介绍“Java异常类型及处理方法”,在日常操作中,相信很多人在Java异常类型及处理方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常类型及处理方法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • Java异常类型介绍及处理方法
    前言: Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,代码中怎么处理的,应该怎么使用,底层怎么实现的等等,可能就会有些不是那么清晰。本文基于此详细捋一下异...
    99+
    2022-11-12
  • java中异常类型及异常处理的详细介绍
    一、异常实现及分类1.先看下异常类的结构图上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常实现了:java相关免费视频教程:java教学视频所有的异常都是从Thro...
    99+
    2015-02-22
    java入门 java 异常类型 异常处理
  • Java异常类型以及处理实例详解
    目录一、异常的描述二、异常的体系三、异常的分类:四、异常处理的捕捉形式五、异常处理的原则六、finally七、异常的应用八、异常的注意事项:总结一、异常的描述 程序运行时,发生的不被...
    99+
    2022-11-12
  • Java中怎么处理异常类型
    这期内容当中小编将会给大家带来有关Java中怎么处理异常类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、异常的描述程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。...
    99+
    2023-06-20
  • Java异常类型分析及处理方法是什么
    今天就跟大家聊聊有关Java异常类型分析及处理方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言:Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,...
    99+
    2023-06-22
  • Python常见异常类型处理
    目录1.Python语法错误 2.Python运行时错误 前言: 开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还...
    99+
    2022-11-12
  • Python异常类型以及处理方法汇总
    目录前言1 异常类型1.1 Python内置异常1.2 requests模块的相关异常1.3 用户自定义异常2. 异常捕获2.1 捕获所有异常2.2 捕...
    99+
    2022-11-12
  • Python异常类型以及处理方法有哪些
    这篇文章将为大家详细讲解有关Python异常类型以及处理方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考...
    99+
    2023-06-15
  • Java异常(Exception)处理以及常见异常总结
    目录前言异常简介 异常类型 总结前言 很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。...
    99+
    2022-11-12
  • Python中的异常类型及处理方式示例详解
    目录前言正文一、什么是异常二、异常的类型三、异常处理四、try 介绍五、finally 介绍六、raise 介绍结尾前言 Python 是一种面向对象的、解释型的、通用的、开源的脚本...
    99+
    2022-11-12
  • java中异常处理怎么分类
    小编给大家分享一下java中异常处理怎么分类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序...
    99+
    2023-06-14
  • Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
    Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 Simple...
    99+
    2022-11-12
  • springboot实现全局异常处理及自定义异常类
    目录全局异常处理及自定义异常类全局异常处理定义一个业务异常的枚举全局异常处理配置springboot Restful使用springboot 返回 ModelAndView全局异常处...
    99+
    2022-11-13
  • Java常见异常及处理方式总结
    目录一、概述二、异常分类三、声明及抛出四、捕获异常五、捕获多个异常六、自定义异常七、异常堆栈一、概述 异常指不期而至的各种状况,它在程序运行的过程中发生。作为开发者,我们都希望自己写...
    99+
    2022-11-12
  • Java程序常见异常及处理汇总
    Java程序中常见的异常包括:1. NullPointerException(空指针异常):当尝试访问一个空对象的方法或属性时抛出。...
    99+
    2023-08-16
    Java
  • Java异常类及搭建信用盘程序制作处理
    异常体系两大类:搭建信用盘程序制作q<115.28.8.00.9.9>无论是error,还是Exception,问题发生就应该可以抛出,让调用者知道并处理,该体系的特点就在于Throwable及其所有子类都具备可抛性。Throw...
    99+
    2023-06-02
  • java常见异常类型有哪些
    Java常见的异常类型包括:1. NullPointerException(空指针异常):当引用变量为null时,使用该变量进行操作...
    99+
    2023-09-27
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作