前言

我有个技能,就是把“我”说的听起来特别像“老子”。

以前是小喽啰的时候,会跟领导说“我!不加班。”,听起来就像“老子不加班!”一样。到最后发现,我确实没有把计划内的工作拖到需要加班才能完成,这个“老子”也就慢慢的被承认了!到后来我带队的时候,我说“我不让你们加班!”,这个时候听起来绝对不像“老子不让你们加班!”,后来他们也真的不加班就把项目漂亮的做完了,相信他们愿意承认我有“老子”的本事。

哈哈!这个有点妄自尊大了哟。做到就可以了,千万别这么讲啊!低调,低调。不过什么事情我都能做到不加班,这事是真的。在这一系列文章里我要告诉大家一系列的实践经验,实施之后会发现:你能够一次交付了!再也不用加班了!有更多时间陪老婆孩子了!有更多时间陪哥们兄弟了!还可能有更多事情去把妹了!……总之好处多多。

本文讲述第一个原则——这真的该用try-catch吗?以后会不定期更新。

这真的该用try-catch吗?

用try-catch之前一定要三思啊!其实绝大多少情况都是不应该用try-cath的。机器的行为具有非常大的确定性,尤其是CPU,它的处理过程就是一系列的与、或、非的组合。曾经在http://bbs.pfan.cn/上看到一则广告,一个程序员研究出来成果了——机器已经具有了智能!为什么呢?机器能给出不确定的结果啊——有时候你用的操作系统、软件非常流畅好用,有时候仿佛专门使坏一样。靠!把程序的bug当人工智能,也是醉了。人才是比较“欠”的,你让他输入数字,可偏偏输入abc;你让他输入abc,他偏偏输入数字。所有欠揍的机器背后都有一群欠揍的程序员!

所以开发中要灵活处理的地方只有处理自然人跟机器交互的地方!其他地方能够约定清晰的时候尽量约定清晰,而不是依赖异常处理与恢复机制。

约定清晰说明对程序内部的行为完全掌握了,这样的代码执行效率高、好调试。换句话说代码中用的try catch越少,程序越稳健。java对错误处理只引入了异常处理机制,所以java中有两类异常checked和unchecked,unchecked本质上是错误,一个已经发布的程序原则上是不允许出现unchecked的异常的。c c++ c#等语言引入了assert机制,这种机制会使得程序遇到错误的时候直接中止执行,这种机制,错误没法隐藏。
 
能够约定清晰的时候尽量约定清晰,是为了现在不加班啊!哥们!约定清晰了,写代码的时候是不是就流畅了啊,是不是不用写那么多破坏结构的try-catch了啊!否则写代码跟便秘一样,不加班才怪呢!
 
不要用try-catch让错误隐藏起来,是为了以后不加班啊!哥们!错误隐藏起来,以后出了类似“人工智能”的错误搞死你!哭爹喊娘,找都找不到!
 
不要理解错误啊!约定清晰包括把异常也考虑进去,微软的员工写了一本书好像叫《怎么编写无错误的代码》,里面提到很多错误都在错误处理里面。异常表示什么——可能性和无法杜绝。需要考虑用异常的地方有——IO和别人的代码。IO好理解,网络通信、文件读写、数据库连接等等。别人的代码也很好理解啊——你不欠,不代表别人不欠啊。不要假定别人都是欠的哦,这样你还得考虑别人怎么欠的,多累啊。就像生活一样,不要以恶意揣摩别人,这样你将会生活在恐惧中!先假设别人不欠,等出问题了,骂他揍他都行——这事儿得你们自己负责,别说我教唆的!
 
关于这个原则,很多介绍具体实践方法的文章都提到了,这就有一篇——assert()函数用法总结
 
发现很多只会java的或者先学java的对这个原则不能接受。哪些从汇编、C、C++一路斩上来的很容易接受这个原则。不接受不要紧,别上来就喷我!喷完喷前,还是都思考一下。

这真的该用try-catch吗?的更多相关文章

  1. 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    本文转载自  java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...

  2. 你写的Try...Catch真的有必要么?

    很多人喜欢用Try...Catch把每一个方法都包裹起来,可是真的有必要么? 为什么要这样做?我估计是大家被BUG吓怕了,生怕生产环境出现各种莫名其妙的错误,比如最经典的NullReferenceEx ...

  3. 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理? finally 体遇到 return 怎么办?finally 体里有 System.exit ...

  4. WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?

    在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...

  5. 你真的理解Java中的try/catch/finally吗?

    看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() {    try {        System.o ...

  6. java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    掌握下面几条原则就可以完全解决“当try.catch.finally遭遇return”的问题. 原则:1.finally语句块中的代码是一定会执行的,而catch块中的代码只有发生异常时才会执行. 2 ...

  7. 再问你一遍,你真的了解try..catch(finally)吗???

    定义 首先来看下 MDN 的定义: The try...catch statement marks a block of statements to try and specifies a respo ...

  8. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  9. C++异常处理:try,catch,throw,finally的用法

    写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...

  10. C++异常处理: try,catch,throw,finally的用法

    写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...

随机推荐

  1. 简单好用的表单校验插件——jQuery Validate基本使用方法总结

    jquery validate当前最新版本是1.17.0,下载链接是:https://github.com/jquery-validation/jquery-validation/releases/t ...

  2. 多线程《五》GIL全局解释器锁

    一 引子 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native t ...

  3. #论文笔记# [pix2pixHD] High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs

    Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Andrew Tao, Jan Kautz, and Bryan Catanzaro. "High-Res ...

  4. MongoDB 副本集配置,开启账号认证

    MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定 3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1. ...

  5. python 面向对象十一 super函数

    python 面向对象十一 super函数   super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(se ...

  6. 【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 01 什么是旅行商问题(TS ...

  7. Application received signal SIGABRT

    Application received signal SIGABRT (null) (( 0 CoreFoundation 0x0000000182bbadc8 <redacted> + ...

  8. 富文本的一般处理方式,document.getElementById('富文本的ID').contentWindow.document.body.innerHTML = '%s'" %(content)

    如果套不出来,去问前端开发帮忙吧 哈哈

  9. 配置YOLO2(ubuntu16.04+cuda8.0+opencv3.1.0)

    要求已经安装好了CUDA 8.0 以及OpenCV3.1.0 YOLO官方网站 配置darknet git clone https://github.com/pjreddie/darknet cd d ...

  10. maven No compiler is provided environment

    eclipse maven操作正常出现的No compiler is provided in this environment. Perhaps you are running on a JRE ra ...