try

63.异常的处理方式之一:捕获异常

不羁的心 提交于 2020-02-02 23:58:01
try语句块中放可能出现异常的语句 catch语句的作用是捕获异常 finally语句块作用是终止 try: try语句指定了一段代码,该段代码就是异常捕获并处理的范围。在执行过程中,当任意一条语句产生异常时,就会跳过该条语句中后面的代码。代码中可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理。 一个try语句必须带有至少一个catch语句块或一个finally语句块 。 注意事项 当异常处理的代码执行结束以后,不会回到try语句去执行尚未执行的代码。 catch: n-每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。 n-常用方法,这些方法均继承自Throwable类 。 u-toString ()方法,显示异常的类名和产生异常的原因 u-getMessage()方法,只显示产生异常的原因,但不显示类名。 u-printStackTrace()方法,用来跟踪异常事件发生时堆栈的内容。 n-catch捕获异常时的捕获顺序: u-如果异常类之间有继承关系,在顺序安排上需注意。越是顶层的类,越放在下面,再不然就直接把多余的catch省略掉。 也就是先捕获子类异常再捕获父类异常。 finally: n-有些语句,不管是否发生了异常,都必须要执行,那么就可以把这样的语句放到finally语句块中。 n

Redis 分布式锁实现

谁说我不能喝 提交于 2020-02-02 22:39:16
在分布式集群环境下,对 Redis 数据的修改也会发生冲突,这时候需要利用锁的机制,防止数据在同一时间被多个系统修改。 实现分布式锁的思路就是利用 Redis 的两个命令:setnx 和 setex,修改数据前使用 setnx 命令对操作加锁,防止其他系统执行相同操作,使用 setex 命令设置锁超时时间(这一步的目的是防止系统突然挂掉,没有解锁),在操作结束后,进行解锁。 我们新建一个任务 Scheduled,每10秒执行一次,在不同的机器(虚拟机)上启动相同的项目,因为锁的原因,同一时间只有一个任务被执行,代码如下: @Service public class LockNxExJob { private static final Logger logger = LoggerFactory.getLogger(LockNxExJob.class); @Autowired private RedisService redisService; @Autowired private RedisTemplate redisTemplate; private static String LOCK_PREFIX = "prefix_"; @Scheduled(cron = "0/10 * * * * *") public void lockJob() { String lock = LOCK

python中for,while,try后接else用法

ぃ、小莉子 提交于 2020-02-02 21:49:54
python中else不再是if的专属,还可以接在for,while,try等语句后面,用于处理程序块正常结束时的后续问题。例如: for x in range ( 10 ) : if x == 2 : print ( x ) else : print ( "entering else..." ) Output: 2 entering else . . . 当迭代对象完成所有迭代后且此时的迭代对象为空时,如果存在else子句则执行else子句,没有则继续执行后续代码; for x in range ( 10 ) : if x == 2 : print ( x ) break else : print ( "entering else..." ) Output: 2 for x in range ( 10 ) : if x == 2 : print ( x ) continue else : print ( "entering else..." ) Output: 2 entering else . . . 如果迭代对象因为某种原因(如带有break关键字)提前退出迭代,则else子句不会被执行,程序将会直接跳过else子句继续执行后续代码。使用 continue 关键字快速进入下一论循环,循环正常结束后,不影响else 语句触发。 来源: CSDN 作者: xml.nudt 链接:

HTTP:Java实现HTTP请求的三种方式

你离开我真会死。 提交于 2020-02-01 17:02:36
目前JAVA实现HTTP请求的方法用的最多的有两种: 一种是通过HTTPClient这种第三方的开源框架去实现。HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求, HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工作中使用httpClient3.1的代码还是很多 ,HttpClient4.5是org.apache.http.client下操作远程 url的工具包,最新的; 另一种则是通过HttpURLConnection去实现,HttpURLConnection是JAVA的标准类,是JAVA比较原生的一种实现方式。 第一种方式:java原生HttpURLConnection package com.powerX.httpClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net

王颖奇 20171010129《面向对象程序设计(java)》第十五周学习总结

此生再无相见时 提交于 2020-02-01 13:46:22
实验十五 GUI编程练习与应用程序部署 实验时间 2018-12-6 学习总结: 理论部分: ◼ JAR文件◼ 应用程序首选项存储◼ Java Web Start JAR文件: 1.Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar文件后,GUI界面程序就可以直接双击图标运行。 2.jar文件(Java归档)既可以包含类文件,也可包含诸如图像和声音这些其它类型的文件。 3.JAR文件是压缩的,它使用ZIP压缩格式。 jar命令 1 jar命令格式: jar {ctxui} [vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 2 Jar命令选项(教材581页表13-1): – -c 创建一个新的或者空的存档文件并加入文件。 – -C 暂时改变到指定的目录 – -e 在清单文件中创建一个条目 – -f 将JAR文件名指定为第二个命令行参数 – -i 为指定的JAR文件产生索引信息 – -m 将一个清单文件(manifest)添加到JAR文件中 – -M 不产生所有项的清单文件(manifest) – -t 列出存档内容的列表 – -u 更新已存在的JAR文件 – -v 生成详细的输出结果 – -x 解压存档中的命名的(或所有的〕文件 – -0 只存储方式,不用ZIP压缩格式

第十七单元 异常

不问归期 提交于 2020-02-01 09:31:18
一、填空题(30道) 1.Java程序运行过程中所发生的异常事件可分为两类,分别是( 错误 )和( 异常 )。 2.在处理异常时,可将异常看成两类,分别是( 运行时异常 )和( 非运行时异常 )。 3.在java的异常体系中,最大父类是( throwable )。 4.将有可能产生错误的代码放在监视代码块( try... )中。 5.异常处理中有些代码一定要执行,可以选择放在( finally... )块中。 6.程序发生异常后进入到异常处理块( catch.. )中。 7.java.io.IOException属于( IO )异常。 8.ArithmeticException属于( 算术 )异常。 9.ArrayIndexOutOfBoundsException属于( 越界 )异常,含义是( 数组下标越界异常 )。NullPointerException属于( 空指针 )异常,含义是( 指针没有指向任何对象 )。 10.FileNotFoundException属于( 文档 )异常,含义是( 要访问的文件不存在 )。 11.ClassCastException属于( 类型转换 )异常,含义是( 两种类型不能直接转换 )。 12.异常在处理过程中用( throws )关键字抛出异常对象。 13.异常处理语法中只有( try )块是必须的,( catch )块和( finally

java代码运行到Service service = new Service();后台运行到这里停止,无报错解决方案

寵の児 提交于 2020-02-01 03:49:05
java代码运行到Service service = new Service();后台运行到这里停止,无报错解决方案。 代码片段: LOGGER.debug("enter appInvoke ..."); Service service = new Service(); LOGGER.debug("createCall..."); 日志打印了enter appInvoke ... ,不报错,下面的日志不能打出来,代码不能执行下去了。而且此时此时的控制台并没有输出任何错误,其实是有报错的,如果用try{} catch (Exception e)是不能输出错误的,这个时候注意了,我们把原来的try{} catch (Exception e)替换成try{} catch (Throwable e),为什么呢 Throwable和Exception的区别可以自行百度,我的理解是Throwable是Exception的父类,这个时候控制台就会出现错误信息,一般情况下会出现: java.lang.NoClassDefFoundError: Could not initialize class org.apache.axis.client.AxisClient... 首先需要去检查一下看看有没有少commons-discovery-0.4.jar,如果导入commons-discovery-0

性能优化10_JobScheduler源码

▼魔方 西西 提交于 2020-02-01 03:06:02
Android性能优化汇总 1 JobScheduler 实现获取 JobScheduler tm = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 两个方面分析: 系统服务什么时候启动的 寻找是否有JobSchedulerService的类 结果:发现JobSchedulerService 存在 JobSchedulerService extends com.android.server.SystemService implements StateChangedListener, JobCompletedListener 2 aidl JobScheduler 是一个抽象类,无法跟踪 由于是通过getSystemService获取,自己的服务和系统服务需要通信,那么应该涉及到跨进程访问,进程间通信(ipc、binder、aidl) 而在JobScheduleService中也找了对应的class:JobSchedulerStub extends IJobScheduler.Stub 3 schedule方法 JobScheduler.schedule -> IJobScheduler.Stub.schedule 4 验证上述内容 寻找有没有JobScheduler的实现类impl

异常捕获的学习

不羁岁月 提交于 2020-01-31 13:33:20
异常处理 捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 如果你不想在异常发生时结束你的程序,只需在try里捕获它。 语法: 以下为简单的 try....except...else 的语法: try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生 try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。 实例

Python实例浅谈之五Python守护进程和脚本单例运行

匆匆过客 提交于 2020-01-31 06:00:08
一、简介 守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行。 Python 有时需要保证只运行一个脚本实例,以避免数据的冲突。 二、Python守护进程 1、函数实现 [html] view plain copy #!/usr/bin/env python #coding: utf-8 import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这样做!inetd完成了 所有需要做的事情,包括重定向标准文件描述符,需要做的事情只有chdir()和umask()了 ''' def daemonize ( stdin= '/dev/null', stdout= '/dev/null', stderr= '/dev/null'): #重定向标准文件描述符(默认情况下定向到/dev/null) try: pid = os.fork() #父进程(会话组头领进程)退出,这意味着一个非会话组头领进程永远不能重新获得控制终端。 if pid > 0: sys.exit(0)