try

Java异常处理机制

孤人 提交于 2020-02-15 14:50:55
Throwable类是Java语言中所有错误和异常的超类。 只有作为该类(或其子类之一)实例的对象才由Java虚拟机抛出,或者可以由Java throw语句抛出。 类似地,只有这个类或它的一个子类可以是catch子句中的参数类型。 为了在编译时检查异常, Throwable 类和 Throwable 类的任何子类(不同时是RuntimeException或Error的子类)都被视为已检查异常。 异常是程序在编译或运行过程出现的例外,这些例外在有的可以避免有的却无法避免。 所有的异常类是从 java.lang.Exception 类继承的子类。 Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。 Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。 Error 用来指示运行时环境发生的错误。 例如,JVM 内存溢出。一般地,程序不会从错误中恢复。 1、异常分类 package LESSON10; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class demo1 { /

Slf4j打印异常的堆栈信息

前提是你 提交于 2020-02-15 07:01:13
一、前言   直接用logger.info("异常信息为:"+e)或者logger.info(e.getMessage())只能记录到异常的描述信息,却没有其异常具体发生在哪一行代码。 这样即使通过日志发现出现了异常,也没法马上定位问题。 因此就催生了一个想法,打印日志是否能像在IDE本地跑程序时出现未捕获的异常时,控制台能打印出完整的错误堆栈信息。 二、问题场景   日常开发中,经常在service实现层使用try-catch-finally保证代码的健壮性, 直接用logger.info("异常信息为:"+e)或者logger.info(e.getMessage())只能记录到异常的描述信息,无法打印完整异常堆栈信息,无法定位其异常具体发生在哪一行代码,当面对比较复杂的代码,那么排查问题将会非常麻烦。 下文将简单重现这类场景,并得到相应的解决方法。 1、不加try-catch 示例: @GetMapping("/hello") public String sayHello(){ logger.info("hello Sfl4j + logback......"); int i = 3/0; return helloService.sayHello(); } 运行结果: 即:当不加try-catch的时候,当出现了意料之外的运行时异常,控制台是能够能打印出完整的错误信息。 2

snmp4j简介及应用

 ̄綄美尐妖づ 提交于 2020-02-15 06:30:01
一、SNMP简介 SNMP指的是简单网络管理协议。它属于TCP/IP五层协议中的应用层协议。它提供了一种简单和方便的模式来 管理网络中的各个元素 。这里的 元素就是各个被管理的对象,可以是因特网中的某个硬件,比如网卡,也可以是某些硬件和软件的配置参数的集合 。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。 SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员; 而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。 SNMP管理站和SNMP代理之间是 松散耦合 。他们之间的通信是通过 UDP协议 完成的。一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。 但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。 SNMP协议于1988年发布。到目前一共经历了V1,V2,V3三个版本。其中V1已经被废弃,而V2c虽然没有能够成为正式标准,但是已经被很多厂家所接受,V3目前是因特网的正式标准。与V1相比,V2

java如何写数据到txt文件中

半世苍凉 提交于 2020-02-15 03:11:29
java如何写数据到txt文件中 import java . io . * ; import java . util . ArrayList ; import java . util . List ; public class demo03 { public static void main ( String args [ ] ) { writeFile ( ) ; } /** * 写入TXT文件 */ public static void writeFile ( ) { try { File writeName = new File ( "C:\\Users\\Administrator\\Desktop\\03.txt" ) ; // 相对路径,如果没有则要建立一个新的output.txt文件 writeName . createNewFile ( ) ; // 创建新文件,有同名的文件的话直接覆盖 try ( FileWriter writer = new FileWriter ( writeName ) ; BufferedWriter out = new BufferedWriter ( writer ) ) { out . write ( "我会写入文件啦1\r\n" ) ; // \r\n即为换行 out . write ( "我会写入文件啦2\r\n" ) ; //

线程池

人走茶凉 提交于 2020-02-14 23:25:04
1. 线程池 线程池是一种复用线程的技术,由于线程的销毁和创建会大大浪费时间以及浪费内存,而线程池可以让线程执行完任务后不立即销毁,让线程重复使用,继续执行其他任务。 2. 线程池详解 ThreadPoolExecutor 线程池中最核心的类是ThreadPoolExecutor,它实现了execute(Runnable command) ,这个方法是用来向线程池传入任务。此类的构造函数如下: public ThreadPoolExecutor ( int corePoolSize , int maximumPoolSize , long keepAliveTime , TimeUnit unit , BlockingQueue < Runnable > workQueue ) ; public ThreadPoolExecutor ( int corePoolSize , int maximumPoolSize , long keepAliveTime , TimeUnit unit , BlockingQueue < Runnable > workQueue , ThreadFactory threadFactory ) ; public ThreadPoolExecutor ( int corePoolSize , int maximumPoolSize , long

单列模式下的数据库连接与Servlet之间页面访问用户登录的小例子

风格不统一 提交于 2020-02-14 20:54:06
下面是我自己写的一个关于servlet的例子 首先是数据库配置,使用的是静态的单例模式 代码如下: / 数据库地址连接 // 使用静态单列模式 public class JdbcUtil { private static String driverName; private static String url; private static String username; private static String password; private static Properties properties = new Properties(); private static JdbcUtil jdbcUtil; private JdbcUtil() { } public static JdbcUtil getInstance() { if (jdbcUtil == null) { jdbcUtil = new JdbcUtil(); } return jdbcUtil; } public static void main(String[] args) { JdbcUtil model = new JdbcUtil(); } static { try { // 调用resource包下的dbconfig.properties文件 InputStream in = Thread

JDBC的使用

こ雲淡風輕ζ 提交于 2020-02-14 11:12:58
基本使用 1、下载安装JDBC驱动包 2、然后建立连接 1 Connection conn =null; 2 PreparedStatement ps = null; 3 ResultSet rs = null; 4 //加载驱动类 5 Class.forName("com.mysql.cj.jdbc.Driver"); 6 long start = System.currentTimeMillis(); 7 System.out.println("驱动成功加载"); 8 //建立连接(内部包含socket对象,是一个远程连接。比较耗时!这是connection对象管理的一个要点!)、 9 //真正开发中,为了提高效率都会使用连接池来管理连接对象! 10 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc?serverTimezone=UTC","root","123456"); 11 System.out.println("建立连接中"); 12 System.out.println(conn); 13 long end = System.currentTimeMillis(); 14 System.out.println("建立连接耗时"+(end-start)+"ms" 3

JDBC

我的未来我决定 提交于 2020-02-14 11:08:02
主要内容 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 4. 数据库连接池 5. Spring JDBC : JDBC Template JDBC 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门: * 步骤: 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键-->Add As Library 2. 注册驱动 3. 获取数据库连接对象 Connection 4. 定义sql 5. 获取执行sql语句的对象 Statement 6. 执行sql,接受返回结果 7. 处理结果 8. 释放资源 * 代码实现: //1. 导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连接对象 Connection conn =

day29_JDBC

百般思念 提交于 2020-02-14 08:58:41
JDBC 概念 Java DataBase Connectivity Java 数据库连接, Java语言操作数据库。 JDBC本质 :其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 JDBC 规范定义接口 ,具体的实现由各大数据库厂商来实现。JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用 JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。 JDBC 的好处: 程序员如果要开发访问数据库的程序,只需要会调用 JDBC 接口中的方法即可,不用关注类是如何实现的。 使用同一套 Java 代码,进行少量的修改就可以访问其他 JDBC 支持的数据库 使用 JDBC 开发使用到的包: JDBC 的核心 API JDBC 访问数据库的步骤 1:注册和加载驱动 导入驱动 Jar 包 2:获取连接使用DriverManager类中的getConnection方法,获取连接对象 3:Connection连接对象 获取 Statement/getConnection 执行SQL 对象 4

深入理解Java中异常体系

我的梦境 提交于 2020-02-14 01:48:04
任何程序都追求正确有效的运行,除了保证我们代码尽可能的少出错之外,我们还要考虑如何有效的处理异常,一个良好的异常框架对于系统来说是至关重要的。最近在给公司写采集框架的时候系统的了解一边,收获颇多,特此记录相关的理论。 1 .异常体系简介: 异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文件找不到、非法参数、网络超时等。为了保证正序正常运行,在设计程序时必须考虑到各种异常情况,并正确的对异常进行处理。异常也是一种对象,java当中定义了许多异常类,并且定义了基类java.lang.Throwable作为所有异常的超类。Java语言设计者将异常划分为两类:Error和Exception,其体系结构大致如下图所示: Throwable:有两个重要的子类:Exception(异常)和Error(错误),两者都包含了大量的异常处理类。 1、Error(错误):是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。 这些错误是不可查的,非代码性错误。因此,当此类错误发生时,应用不应该去处理此类错误。 2