首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

别再乱用 try except 了...

甚至有时候,不仅不需要捕获异常,你还应该主动抛出异常。在项目完成以后,如果你做的是一个第三方库,是用来给别人调用的,那么,你应该多抛出异常,而不是擅自返回一个普通的错误信息。...但实际上,更好的做法是,直接抛出一个异常: def query_name(user_id): if not isinstance(user_id, int): raise Exception...甚至在某些情况下,你可以使用 Python 的断言: def query_name(user_id): assert isinstance(user_id, int), '用户 id 必须是整型...但我们可以通过python3 -O xxx.py来让所有assert xxx语句失效。 尽量早地让异常暴露出来,才能更早地解决问题。 捕获具体异常而不是所有异常 只捕获你明确知道的异常。...强行打印报错信息 如果实在是万不得已,你必须用try...except Exception,如何把具体报错的位置打印出来呢?其实也是有方法的。那就是使用 Python 自带的traceback模块。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Vuejs 3.0 正式版发布!One Piece. 代号:海贼王

    Vue 从一开始就有一个简单的使命:成为一个任何人都能快速学会的平易近人的框架。随着我们用户群的增长,框架的范围也在不断扩大,以适应不断增长的需求。...编译器支持自定义 AST 转换,用于构建时的自定义 (例如构建时的 i18n)。 核心运行时提供了一级的 API,用于创建针对不同渲染目标 (如原生移动端、WebGL 或终端 的自定义渲染器。...尽管某些框架子项目可能仍需要进一步的工作才能达到稳定状态 (特别是 devtools 中的路由器和 Vuex 集成),但我们认为今天使用 Vue 3 启动新的绿色项目是合适的。...## 迁移和 IE11 支持 由于时间限制,我们已推迟了迁移版本 (具有 v2 兼容行为的 v3 版本 + 迁移警告) 和 IE11 版本,并计划在 2020 年第四季度重点关注它们。...2.7 将向后移植来自 v3 的兼容改进,并发出有关 v3 中已删除/更改的 API 使用情况的警告,以帮助潜在的迁移。

    3K10

    DBA遇到问题时的30 个反应,你是哪一种?

    此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,没什么不自己构建一个呢? 6.“虽然网站可以工作,但我害怕 IE 浏览器。”...然后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远来说,反而节省时间。 10.“Stack Overflow 上和善的人或许愿意帮助我。”...在 PHP 中工作了多年之后,我不得不说,Google 是我调试问题时的最好的朋友。使用 Objective-C、C ++、Java、Python 和其他主要语言,也是如此。...几乎所有我使用的编程语言都需要结束符。虽然不是所有的语言都有,但在 C/C ++ 中是很常见的。忘记添加结束符,不过是一个很显然的错误!但是解析器不知道这一点,它会抛出一个致命错误。...聘请另一个开发人员的点子是挺诱人的,但从财政上看显然没有那么可行。而且如果你不亲身体验的话,又怎么能从这些错误中学到东西呢?当你在经历多次失败之后,终于理解了某个编程概念的时候,那感觉真是棒极了。

    83820

    程序员遇到Bug时的30个反应

    此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,没什么不自己构建一个呢? 6.“虽然网站可以工作,但我害怕IE浏览器。”...然后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远来说,反而节省时间。 10.“Stack Overflow上和善的人或许愿意帮助我。”...在PHP中工作了多年之后,我不得不说,Google是我调试问题时的最好的朋友。使用Objective-C、C ++、Java、Python和其他主要语言,也是如此。...几乎所有我使用的编程语言都需要结束符。虽然不是所有的语言都有,但在C/C ++中是很常见的。忘记添加结束符,不过是一个很显然的错误!但是解析器不知道这一点,它会抛出一个致命错误。...聘请另一个开发人员的点子是挺诱人的,但从财政上看显然没有那么可行。而且如果你不亲身体验的话,又怎么能从这些错误中学到东西呢?当你在经历多次失败之后,终于理解了某个编程概念的时候,那感觉真是棒极了。

    46930

    程序员遇到 Bug 时的 30 个反应,你是哪一种?

    此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,没什么不自己构建一个呢? 6.虽然网站可以工作,但我害怕IE浏览器。...然后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远 来说,反而节省时间。 10.Stack Overflow上和善的人或许愿意帮助我。...在 PHP中工作了多年之后,我不得不说,Google是我调试问题时的最好的朋友。使用Objective-C、C ++、Java、Python和其他主要语言,也是如此。...几 乎所有我使用的编程语言都需要结束符。虽然不是所有的语言都有,但在C/C ++中是很常见的。忘记添加结束符,不过是一个很显然的错误!但是解析器不知道这一点,它会抛出一个致命错误。...聘 请另一个开发人员的点子是挺诱人的,但从财政上看显然没有那么可行。而且如果你不亲身体验的话,又怎么能从这些错误中学到东西呢?当你在经历多次失败之 后,终于理解了某个编程概念的时候,那感觉真是棒极了。

    1.1K90

    程序员遇到Bug时的30个反应

    此外,它们还为开发人员提供了一些自定义和独特的选项。万一真的没有可用插件的话,没什么不自己构建一个呢? 6.“虽然网站可以工作,但我害怕IE浏览器。”...然后我发现我的整个方法实际上是错误的,而且从头来过更容易!如果我开始的时候能先做一番研究的话,从长远来说,反而节省时间。 10.“Stack Overflow上和善的人或许愿意帮助我。”...在PHP中工作了多年之后,我不得不说,Google是我调试问题时的最好的朋友。使用Objective-C、C ++、Java、Python和其他主要语言,也是如此。...几乎所有我使用的编程语言都需要结束符。虽然不是所有的语言都有,但在C/C ++中是很常见的。忘记添加结束符,不过是一个很显然的错误!但是解析器不知道这一点,它会抛出一个致命错误。...聘请另一个开发人员的点子是挺诱人的,但从财政上看显然没有那么可行。而且如果你不亲身体验的话,又怎么能从这些错误中学到东西呢?当你在经历多次失败之后,终于理解了某个编程概念的时候,那感觉真是棒极了。

    32710

    前端魔法堂——异常不仅仅是trycatch

    对于业务用例的例外我们别无它法,必须要求实施人员与用户共同提供合理的解决方案;而技术上的例外,则必须由我们码农们手刃之,而这也是我想记录的内容。  ... // 1.当前代码块将作为一个任务压入任务队列中,JavaScript线程会不断地从任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈从顶到底抛出...关于在StackOverflow上早有人讨论如何自定义异常类型了参考 于是我们顺手拈来即可 function MyError(message, fileName, lineNumber){ if...Error} error - Error实例,Safari和IE10中没有这个实参  这时我们就可以通过它捕获除了try/catch能捕获的异常外,还可以捕获setTimeout等的异步代码异常,语法错误...) }) 迟来的catch  由于Promise实例可异步订阅其状态变化,也就是可以异步注册catch处理函数,这时其实已经抛出Uncaught(in promise) Error,但我们依然可以处理

    1.1K30

    前端魔法堂——异常不仅仅是trycatch

    对于业务用例的例外我们别无它法,必须要求实施人员与用户共同提供合理的解决方案;而技术上的例外,则必须由我们码农们手刃之,而这也是我想记录的内容。  ... // 1.当前代码块将作为一个任务压入任务队列中,JavaScript线程会不断地从任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈从顶到底抛出...关于在StackOverflow上早有人讨论如何自定义异常类型了参考 于是我们顺手拈来即可 function MyError(message, fileName, lineNumber){ if...Error} error - Error实例,Safari和IE10中没有这个实参  这时我们就可以通过它捕获除了try/catch能捕获的异常外,还可以捕获setTimeout等的异步代码异常,语法错误...) }) 迟来的catch  由于Promise实例可异步订阅其状态变化,也就是可以异步注册catch处理函数,这时其实已经抛出Uncaught(in promise) Error,但我们依然可以处理

    1.5K70

    JVM运行时的数据区

    程序计数器 在通用的计算机体系中,程序计数器用来记录当前正在执行的指令,在JVM中也是如此。程序计数器是线程私有,所以当一个新的线程创建时,程序计数器也会创建。...StackOverflowError 出现在栈内存设置成固定值的时候,当程序执行需要的栈内存超过设定的固定值会抛出这个错误。...方法区 在JVM规范中,方法区被视为堆内存的一个逻辑部分。这一点可能由于具体的JVM实现而不同,甚至在方法区不实现垃圾回收处理也是可以的。...一个运行时常量池实际上是一个类或者接口的class文件中常量池表(constant_pool table)的运行时展示形式。...本地方法栈基本和JVM栈一样,其大小也是可以设置为固定值或者动态增加,因此也会对应抛出StackOverflowError和OutOfMemoryError错误。

    40930

    文末送书 | 2020疫情期间前端妹子面试小记(含答案)

    」 相对长度单位,相对父元素的字体大小而言的「rem」 相对长度单位,相对html根元素的字体大小而言的,css3新增元素 盒子模型 「IE盒子模型」 宽度=内容宽度+padding *2+border...currentTarget是事件处理程序注册的元素 document.ready和window.onload区别 document.ready是dom树加载后执行,而window.onload是整个页面资源加载完后执行...'use strict' console.log(this.a) } var a=2 foo() 复制代码 此时this不再指向window,而是undefined,因此调用this.a会抛出一个错误...此钩子会收到三个参数:错误对象、发生错误的组件实例 以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。...null的属性 3.请求拦截器调用过滤字符串方法,遍历url上的字段,如果为数组或对象转为JSON对象 4.响应拦截器捕获错误,根据http状态码进行不同的处理,比如401跳转登陆页面,403返回您没有权限

    1K50

    编写可维护的JavaScript

    2.instanceof运算符也可以检测自定义的类型,这也是唯一的方法,对于内置JS类型也是如此 3.检测函数最好的方法是使用typeof,因为它可以跨帧(frame)使用。...放到单独的文件中,清晰的分隔数据和应用逻辑 十、抛出自定义错误 A.错误的本质 1.当某些非期望的事情发生时程序就引发一个错误 2.像内置的失败案例一样来考虑错误是非常有帮助的。...C.抛出错误的好处 1.抛出自己的错误可以使用确切的文本供浏览器显示。...除了行和列的号码,还可以包含任何你需要的有助于调试问题的信息 D.何时抛出错误 1.一旦修复了一个很难调试的错误,深度增加一两个自定义错误。...finally执行完成后才返回 2.错误只应该在应用程序栈中最深的部分抛出,应用程序逻辑总是知道调用某个特定函数的原因,也是最适合处理错误的,不要将catch块留空,至少输出点什么 F.错误类型 1.7

    85810

    Vue 3.0 — One Piece 发布

    Vue是一个独立的项目,是为社区而创建的,也是由社区来维持的,如果没有您的一贯支持,Vue 3.0是不可能实现的。...进一步推进 "渐进式框架 "的概念 Vue从一开始就有一个简单的使命:成为一个任何人都能快速学会的平易近人的框架。随着我们用户群的增长,框架的范围也在不断扩大,以适应不断增长的需求。...编译器支持自定义AST转换,用于构建时的定制(例如构建时的i18n)。 核心运行时提供了一流的API,用于创建针对不同渲染目标(如原生移动、WebGL或终端)的自定义渲染器。...它可以与其他模板解决方案(如 lit-html)配对使用,甚至在非 UI 场景中使用。 用于解决规模问题的新API 在Vue 3中,基于对象的2.x API基本没有变化。...虽然框架的一些子项目可能还需要进一步的努力才能达到稳定的状态(特别是devtools中的路由器和Vuex集成),但我们相信现在就可以使用Vue 3开始新的、绿色领域的项目。

    1.1K20

    何时使用Java Stream,何时使用Java集合框架

    但是不少同学在学习和使用Stream时依然感到很困惑,不知道何时使用Stream,甚至想不起来使用Stream,甚至在Stream和集合框架的选择上也成了问题。今天胖哥将尝试帮你解决这些疑问。...Stream 并非数据结构 虽然我们把Stream和以Collection为代表的集合框架类型放在一起对比,但它只是将数据源(Source)中的数据元素提取到数据操作管道,并按照定义好的规则(操作符)进行...另外Stream也绝不修改自己所封装的底层数据结构的数据。 ❝Stream有点类似于水管网络。 无固定大小 水管网络中流动的水是没有固定大小的,甚至可以是无限的。Stream也是如此。...看初始化成本 对于集合,一旦定义使用需要一次性的加载入内存,如果你打算在内存中重用这些数据,使用集合就非常合适;而Stream的惰性特点,在终端操作之前不会有任何的中间操作,这意味着不会上来就初始化数据到内存...是否需要重用对象实例 当结果以Collection的形式返回时,我们可以重复使用。而一个Stream被使用后,就认为它已消耗掉,并在重用时抛出IllegalStateException,如上面所示。

    78230

    360收购Opera,谁说浏览器没价值了?

    今天一则网络爆料显示,360欲收购来自挪威的著名浏览器厂商Opera,这是当年与IE、Firefox其名的三大浏览器之一。...不过,由于没有Chrome快速极简的特质,没有Firefox丰富的插件支持,没有IE所拥有的『Windows』干爹,Opera一直比较小众。...甚至在很多统计之中,Opera都被归纳到了『其他』类。尽管Firefox尝试进入操作系统市场并失败,但相对而言,Opera动作慢了许多,去年便已传出消息说要出售。...浏览器一直是一个比较尴尬的市场:PC流量不断被移动设备蚕食是不争事实,而在移动端,Native App和微信为代表的『超级App』正在取代浏览器的功能。...所以,360未来至少可以将Opera流量往搜索导,虽然Opera份额尤其是在中国的份额不大,但蚊子肉也是肉。

    1.8K80

    Js框架设计之DomReady

    2、HTML是要通过浏览器解析之后才会转换成为DOM节点 一般地,但我们向浏览器中输入一个地址,开始加载页面到我们看到页面的内容为止,这期间就有一个DOM节点构建的过程(浏览器将HTML标签转换为DOM...当前页面上的所有的HTML标签都转换成DOM节点,这就叫DOM树建完,简称为DOMReady. 3、浏览器是自上向下,从左往右,HTML字符串标签一个一个的读入,页面上会有很多的标签,响相应的会生成很多的对应的...的错误 二、使用DomReady机制解决因DOM解析未完成前使用document.getElementById获取报null错误的问题 1、在早期的浏览器中,提供了一个window.onload方法,这个方法会在浏览器加载完所有的文件...,就对节点进行操作,产生错误。...Dom.beforeReady(); } }); (function () { // DOM树未创建完之前调用doScroll会抛出错误

    1.5K60
    领券