今天想和大家沟通下,对java中检查异常的使用,大家怎么看的。
反正我是很烦这个检查异常,烦它的原因在于,它一定要强制你去处理这个异常。
检查异常,从含义上来说,就是说出现异常的原因不是代码的问题,而是环境的问题,比如文件找不到,比如数据库连接有问题,这种异常,你是可以在catch中捕获并且处理的。
但是问题是,我在catch中我要怎么处理呢?文件找不到,难道说我会给它在创建个文件?数据库连接有问题,难道说我会在catch中换个连接?在大多数情况下,这种异常真的没法在catch中处理,我在遇到这种情况时,都是直接在catch中直接抛出一个RumtimeException,这种处理效果其实和没有catch的效果是一样的,但是却给代码增加了复杂度,但是没办法啊,谁让人家强制让你处理呢?
或许有人会说了,你不catch也可以啊,在方法头上把异常throws出去也可以啊,但是这样的话,别人在调用这个方法的时候,是不是还要考虑这个异常怎么处理呢?是catch呢,还是继续throws呢?这样会引起一系列的链式问题。
也许有人还会说,在操作文件或者数据库的时候,操作完成之后,是要回收资源的,而回收资源的代码一定要写在finally中,以保证资源一定可以回收掉,也许这是它需要让你强制处理的原因。
但是第一,有些时候我并没有操作资源,只是单纯的调了一下jdk的api,比如String的getbytes方法,它就非要强制我处理异常,那这种异常我能怎么处理呢?还不是在catch中throw个RumtimeException,我又没有资源需要回收,它要我强制处理的意义在哪呢?第二,即使我真的有资源需要回收,我也可以用try+finally的方式回收,而不用catch异常,我依然可以把资源回收掉,没有必要去强制处理异常。
在我看来,决定一个异常是否是需要在代码中catbh,应该由开发人员,根据具体情况具体分析,如果真的需要处理,那你就在代码中catch。真的没有必要强制处理,这样只能增加的复杂度,没有什么意义。
大家有什么不同的看法吗?欢迎评论区留言讨论[微笑]
继续谈词汇学习,看到很多家长让孩子小学就背完了1600,学完了新二;初中背完了词汇3500,学完了新3;高中就更别提了,直接就是四六级以上的词汇了。于是我就想问个问题,难道中考要求的1600基本词汇,考纲上的那些核心词汇,这些孩子学会真的了吗?要回答这个问题,就得先定义到底什么才叫做会呢?从词义出发,一个单词只记住了几个中文的意思算会吗?不从一个单词的核心意思出发,死记硬背几个貌似无关的意思算会吗?从运用出发,一个单词的派生词和那么多的常用搭配都不会用算会吗?就更不用说一个单词涉及的谚语格言名言佳句了。当然,从某种程度上来说,这些孩子也算是会。他们只是会阅读词汇,但是他们不会用,不会表达。不论是在口语还是写作上。
面对很多早早读完新概念二的孩子,我对他们说“我们来学学way, time, will,attention这些中考核心词汇的用法吧。”他们都笑了,老师也太搞笑了,3个小学词汇外加1个新2第一课的词汇,老师,你是猴子搬来的救兵吗?于是我就先把我创设的词汇故事,让他们做下中译英,问题一下子全来了。八年级的忘了课文里学过的 in a way的用法、全都不知道in the way是挡路的意思。这真是叫我如何能够慢慢来take>
[微笑] Tomcat服务器是如何保持一直运行的呢? [微笑]
Tomcat处理请求的线程都是守护线程,当守护线程没任务处理且非守护线程执行完毕后,程序就会退出。
那么非守护线程是如何一直执行的呢才能保证Tomcat不退出的呢?
源码扒一扒,没错用的就是 Thread.sleep( 10000 )
try {
awaitThread = Thread.currentThread();
while(!stopAwait) {
try {
Thread.sleep( 10000 );
} catch( InterruptedException ex ) {
// continue and check the flag
}
}
} finally {
awaitThread = null;
}
每天打卡背诵一则英语短文,刺激有趣,快速提高英语水平!(有译文)[加油]
(71)The Lion and the Bull
A lion wanted very much to catch a bull, but he was afraid to attack him for fear of his great size, and finally he thought of a trick to catch the strong bull.He came near the bull and said, “I have killed a fine sheep, my friend; and if you will come home and partake of him with me, I shall be very pleased to have your company.”The lion said this, and hoped that he might attack the bull and make his meal>
java中Condition用来实现条件控制,示例代码:
final Lock lock = new ReentrantLock();
AtomicLong money = new AtomicLong(0L);
final Condition enoughMoneyCondition = lock.newCondition();
final Condition noEnoughMoneyCondition = lock.newCondition();
int i=0;
while (i++<=5) {
new Thread(() -> {
try {
lock.lock();
if (money.longValue() < 1L) {
enoughMoneyCondition.await();
}
String uuid = UUID.randomUUID().toString();
System.out.println(uuid+"1#" + money.longValue());
money.decrementAndGet();
System.out.println(uuid+"2#" + money.longValue());
noEnoughMoneyCondition.signal();
} catch (Throwable thr) {
} finally {
lock.unlock();
}
}).start();
new Thread(() -> {
try {
lock.lock();
if (money.longValue() > 0L) {
noEnoughMoneyCondition.await();
}
money.incrementAndGet();
System.out.println("#34; + money.longValue());
enoughMoneyCondition.signal();
} catch (Throwable thr) {
} finally {
lock.unlock();
}
}).start();
}