java异常处理机制示例(java抛出异常、捕获、断言)
发布时间:2022-11-16 21:26:13
这是一个介绍基本异常处理的小例子,包括抛出,捕获,断言,日志。
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。
package com.hongyuan.test;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ExceptionHandleTest {
static{
//开启断言,此后由系统类加载器加载的类将启用断言。
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
public static void main(String[] args) {
/*
* 抛出,捕获
*/
try {
TryCatchTest.run(10, -1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("====================================================");
//日志
LogerTest.run();
System.out.println("====================================================");
//断言
AssertTest.div(3,0);
}
}
/*
* 断言
*/
class AssertTest {
public static double div(int b,int a){
assert a!=0:"你这么用,你小学老师知道吗?";
return (double)b/a;
}
}
/*
* 日志
*/
class LogerTest {
private static Logger logger=null;
static{
//获取日志对象并定义日志级别
logger=Logger.getLogger(LogerTest.class.getName());
logger.setLevel(Level.ALL);
}
public static void run(){
//进入方法
logger.entering(LogerTest.class.getName(), "run");
//普通信息
logger.info("又来找我麻烦,这笔账我记下了!!!");
//警告
logger.warning("太累了,这活没法干了!!!");
//严重
logger.log(Level.SEVERE,"老子不干了!!! ^O^");
//退出方法
logger.exiting(LogerTest.class.getName(), "run");
}
}
/*
* 捕获,抛出
*/
class TryCatchTest {
public static void run(int x,int y) throws IOException {
try{//必须
if(x<0||y<0){
throw new IllegalArgumentException("无语了,这让我怎么办啊!!!");
}
}catch(Exception e){//可选
IOException e1=new IOException("你自己看着办吧!");
e1.initCause(e.getCause());
throw e1;
}finally{//可选
System.out.println("最后他们过上了幸福的生活!!!!(完)");
}
}
}


猜你喜欢
- 本文实例讲述了Android中SurfaceView用法。分享给大家供大家参考,具体如下:这里贴上一个小程序代码,主要运用SurfaceVi
- 本文实例讲述了C#画笔Pen绘制光滑模式曲线的方法。分享给大家供大家参考。具体实现方法如下:using System;using Syste
- 本文实例为大家分享了Unity Shader实现模糊效果的具体代码,供大家参考,具体内容如下今天分享一个超简单实现模糊效果的方法,先上图:核
- 本文实例讲述了java数据结构与算法之双向循环队列的数组实现方法。分享给大家供大家参考,具体如下:需要说明的是此算法我并没有测试过,这里给出
- 业务需要动态给图片增加文字(书本的封面图片),修改字体大小、字体、颜色、控制位置测试代码:string path = @"E:\c
- 背景前些天遇到一个需求,在没有第三方源码的情况下,刷新一个第三方UI,并且拦截到其ajax请求的返回结果。当结果为AVALIABLE的时候,
- Java读文件修改默认换行符Java默认换行符是'\n'。但有时数据并不以'\n'进行换行方法如下publi
- 觉得作者写得太好了,不得不收藏一下。对这个例子的理解://类型参数不能用基本类型,T和U其实是同一类型。//每次放新数据都成为新的top,把
- 随着kotlin在Android开发领域越来越火,协程在各个项目中的应用也逐渐变得广泛但是协程到底是什么呢?协程其实是个古老的概念,已经非常
- 一、创建字符串创建字符串的方式有三种:// 方式一String str = "Hello Bit";// 方式二Stri
- Java String源码分析什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这
- springboots使用的版本是2.0.1,注意不同版本可能有差异,并不一定通用添加Mybatis的起步依赖:<!--mybatis
- 背景Android系统模块代码的编译实在是太耗时了,即使寥寥几行代码的修改,也能让一台具有足够性能的编译服务器工作十几分钟以上(模块单编),
- 制作透明窗体办法有好几种,各有优缺点. 我们先来看看C#本身提供的办法 1:通过设置窗体的 TransparencyKey实现 例:窗体中
- 前言枚举为我看日常开发的可读性提供的非常好的支持,但是有时在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,
- 在使用EL时,其实EL是先看标识符是否是其隐式对象之一,如果不是,才从四个域(page、request、session、applicatio
- java 避免出现NullPointerException(空指针)的方法总结Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出
- 话不多说直接上代码,简单明了import java.io.File;import java.io.FileInputStream;impor
- 前言容器是用于存放数据的载体。容器分为数组、集合。 Kotlin 作为一门全新的语言,肯定还是要有自己的容器类,不然哪天 Java 跟 Ko
- 需求描述 今日需求是删除资源时同时删除与该资源绑定的角色数据,有两张表,资源表、