try

异常处理--C++

谁说胖子不能爱 提交于 2020-01-23 00:00:02
异常处理 异常处理对于编写健壮的软件来说无疑是非常重要的,是否有完善的异常处理机制也是评价某一程序设计语言优劣的一个重要标准。 总的来说,对于小型程序和大型程序出现异常时,其处理的思想和方法稍有差别。一般来说,当小型程序在出现异常时,则将程序立即中断运行,无条件释放所有资源;对于大型程序,则沿着函数等调用的逻辑关系,逆向回溯报告错误。 基本思想是:在底层(执行层)发现的问题,逐级上报,直到有能力可以处理异常的那一级为止。如果程序最终没有相应的代码来处理该异常,那么操作系统就会简单粗暴地shut down该程序,或者死机。 异常处理的实现 记得要 #include <fstream> 哦~ 使用 try / catch 捕获异常 基本格式长这样… try { Test ( ) ; // 可能产生错误的语句 } catch ( int /* 异常类型声明1 */ ) { /* 异常处理语句块1 */ } catch ( char /* 异常类型声明2 */ ) { /* 异常处理语句块2 */ } catch ( long /* 异常类型声明3 */ ) { /* 异常处理语句块3 */ } catch ( . . . ) { cout << "未知异常" << endl ; } 注意: 被检测部分必须放在try块中,否则不起作用 try块和catch块是一个整体

异常的概念

被刻印的时光 ゝ 提交于 2020-01-22 22:21:31
程序正常的情况下可以有顺利运行,遇到用户非法输入,文件找不到磁盘空间已满、数据库连接错误等问题,如果程序不处理,就会崩溃。 异常的类型 1,异常的根类型:java.lang.Thtowable 只有它或它的子类类型,才能用于catch(异常类型e)语句中的异常类型,用于“捕获异常” 换句话说,如果要自定义异常,必须继承Throwable或他的子类 2、Throwable的两大子类:Error和Exception Error:合理的应用程序不应该通过捕获来解决的严重错误。例如:VirtualMachineError虚拟机错误(StackOverflowError栈溢出,OutOfMemoryError堆内存溢出) Exception:合理的应用程序应该通过代码避免或捕获来解决的异常。 3、Exception的两大类:编译时异常和运行时异常 运行时异常:RuntimeException或它的子类 例如:ArrayIndexOutOfBoundsException数组下标越界异常 例如:NullPointerException空指针异常 例如:ClassCastException:类型转换异常 例如:ArithmeticException:算术异常 例如:InputMismatchException:输入不匹配异常 例如:NumberFormatException:数字格式化异常

Thinking in Java---异常处理机制

孤街浪徒 提交于 2020-01-22 18:36:42
java的异常处理机制能够使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续运行的问题,,当程序运行时出现异常时,系统就会自己主动生成一个Exception对象来通知程序.这样就极大的简化了我们的工作. 当然java的异常对象有非常多种,以下这幅图显示了java异常类的继承体系. 从图片中能够看到java将全部的非正常情况分成了两种: 异常(Exception)和错误(Error),他们都继承Throwable父类.Error错误通常是指与虚拟机相关的问题,如系统崩溃,虚拟机错误等.这样的错误无法恢复或不可捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此也不应该试图用catch来进行捕获.而对于Exception我们是能够进行捕获并处理的.以下从几个方面对异常处理机制进行介绍. 一.异常处理的一般格式 try{ ///可能会抛出异常的代码 } catch(Type1 id1){ //处理Type1类型异常的代码 } catch(Type2 id2){ ///处理type2类型异常的代码 } try块中放置可能会发生异常的代码(可是我们不知道详细是哪种异常).假设异常发生了,try块抛出系统自己主动生成的异常对象,然后异常处理机制将负责搜寻參数与异常类型相匹配的第一个处理程序,然后进行catch语句运行(不会在向下查找)

dbcp基本配置和重连配置 -- mysql 8小时自动断开连接的问题

别等时光非礼了梦想. 提交于 2020-01-22 15:48:53
1. 引入dbcp (选择1.4) Java代码 com.alibaba.external jakarta.commons.dbcp 1.4 2. dbcp的基本配置 相关配置说明: initialSize :连接池启动时创建的初始化连接数量(默认值为0) maxActive :连接池中可同时连接的最大的连接数(默认值为8,调整为20,高峰单机器在20并发左右,自己根据应用场景定) maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数 上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置) minIdle:连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,调整为5,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置) maxWait :最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限,调整为60000ms,避免因线程池不够用,而导致请求被无限制挂起)

生产者与消费者

给你一囗甜甜゛ 提交于 2020-01-22 09:04:27
Java中一共有四种方法支持同步,实现生产者消费者模型,不管哪一种,都是用Queue作为缓冲队列(常用前三种): (1)Object的wait() / notify()方法 (2)Lock和Condition的await() / signal()方法 (3)BlockingQueue阻塞队列方法 (4)PipedInputStream / PipedOutputStream wait()/ nofity()方法是基类Object的两个方法,所有Java类都会拥有这两个方法,这样我们就可以为任何对象实现同步机制。wait(),当缓冲区已满/空时,生产者/消费者线程停止自己的执行,放弃锁,使自己处于等待状态,让其他线程执行。notify()/notifyAll(),当生产者/消费者向缓冲区放入/取出一个产品时,向其他等待获取该临资的线程发出可执行的通知,同时放弃锁,使自己处于等待状态。 //启动类 public class ProductConsumer{ public static void main(String[] args) throws InterruptedException{ Queue<Integer> queue=new LinkedList<Integer>(); Product product=new Product(queue,3,"生产者-1"); /

Android数据库源码分析(2)-SQLiteDatabase的实现以及多线程行为

a 夏天 提交于 2020-01-22 03:02:20
Android数据库源码分析(2)-SQLiteDatabase的实现以及多线程行为 本系列主要关注安卓数据库的线程行为,分为四个部分: (1)SQLiteOpenHelper的getReadableDatabase和getWritableDatabase (2)SQLiteDatabase的实现以及多线程行为 (3)连接缓存池SQLiteConnectionPool (4)SQLiteDatabase多线程实践 本篇主要关注 SQLiteDatabase 的线程同步实现与架构实现。 1 SQLiteClosable的acquireReference与releaseReference方法 SQLiteClosable 是 SQLiteDatabase 的父类,也同时是数据库下其他几个类的父类。其中实现了引用计数逻辑来控制资源释放的时机。 private int mReferenceCount = 1; public void acquireReference() { synchronized(this) { if (mReferenceCount <= 0) { throw new IllegalStateException( "attempt to re-open an already-closed object: " + this); } mReferenceCount++;

JDBC之增删改查的代码实现

孤者浪人 提交于 2020-01-21 23:10:54
package com.jdbc.demo2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; /** * JDBC的CRUD的操作 * @author lyt * */ public class JDBCDemo2 { @Test /** * 查询单条记录 */ public void demo5() { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获得连接 conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "oracle"); //创建SQL语句对象 stmt = conn.createStatement(); //编写SQL String sql = "select * from user"; //执行SQL语句 rs

每周一个 Python 标准库 | contextlib

别说谁变了你拦得住时间么 提交于 2020-01-21 19:49:04
技术博客:https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 用于创建和使用上下文管理器的实用程序。 contextlib 模块包含用于处理上下文管理器和 with 语句的实用程序。 Context Manager API 上下文管理器负责一个代码块内的资源,从进入块时创建到退出块后清理。例如,文件上下文管理器 API,在完成所有读取或写入后来确保它们已关闭。 with open ( '/tmp/pymotw.txt' , 'wt' ) as f : f . write ( 'contents go here' ) # file is automatically closed with 语句启用了上下文管理器,API 涉及两种方法:当执行流进入内部代码块时运行 __enter__() 方法,它返回要在上下文中使用的对象。当执行流离开 with 块时,调用上下文管理器的 __exit__() 方法来清理正在使用的任何资源。 class Context : def __init__ ( self ) : print ( '__init__()' ) def __enter__ ( self ) : print ( '__enter__()' ) return self def _

Try except finally raise

僤鯓⒐⒋嵵緔 提交于 2020-01-21 19:38:24
try : # int('qwe') f = open ( '我为什么是一个文件.txt' , 'w' ) print ( f . write ( '我存在了!!!' ) ) sum = 1 + '1' f . close ( ) #except OSError as reason: # print('文件出错\n错误的原因是: '+str(reason)) #except TypeError as reason: # print('类型出错\n错误的原因是: '+str(reason)) #except TypeError as reason: # print('类型出错\n错误的原因是: '+str(reason)) except ( OSError , TypeError ) : print ( '出错了' ) finally : f . close ( ) finally 无论如何都会执行 来源: CSDN 作者: 韩凯 dragon in sky 链接: https://blog.csdn.net/hk2121/article/details/104064589

Java实现impala操作kudu

旧街凉风 提交于 2020-01-21 18:46:18
推荐阅读: 论主数据的重要性(正确理解元数据、数据元) CDC+ETL实现数据集成方案 Java实现impala操作kudu 实战kudu集成impala 对于impala而言,开发人员是可以通过JDBC连接impala的,有了JDBC,开发人员可以通过impala来间接操作 kudu; 引入maven相关依赖 <!--impala的jdbc操作--> <dependency> <groupId>com.cloudera</groupId> <artifactId>ImpalaJDBC41</artifactId> <version>2.5.42</version> </dependency> 通过JDBC连接impala操作kudu 使用JDBC连接impala操作kudu,与JDBC连接mysql做更重增删改查基本一样,创建实体类代码如下: package cn.itcast.impala.impala; public class Person { private int companyId; private int workId; private String name; private String gender; private String photo; public Person(int companyId, int workId, String name,