当前位置: 首页 > 面试题库 >

可以处理语法错误吗?

孔城
2023-03-14
问题内容

考虑以下代码:

try:
    if True a = 1  #It's missing a colon So it's a SyntaxError!!!!!!!
except SyntaxError:
    print 'hey'

您希望它能打印,hey但是会引发SyntaxError,这是我试图避免的错误。那么可以使用try- except块来处理所有异常吗?好吧,如果SyntaxError是例外,为什么它包含在内置例外中?最后我该如何修复上面的代码,使其正确处理异常?

注意:我知道我要做什么完全没有意义,也没有真正的目的


问题答案:

SyntaxError是一个完全普通的内置异常。这一点都不特殊。仅在(通常)抛出时的情况有点不寻常。

语法错误意味着 无法解析 具有该错误的代码。它甚至没有开始成为有效程序,因此无法执行。因此 在程序运行
之前SyntaxError会引发异常,因此无法从程序内部捕获异常。 __

更具体地说,此异常是由解析器引发的。因为解析器在执行代码之前完全运行,而不是与之交织,所以程序无法捕获其自身的语法错误。

解析器本身只是一个程序,但:代码调用解析器可以赶上SyntaxError就像所有其他异常(因为它 像其他的除外)。“调用解析器”的示例包括:

  • compileexeceval
  • import 陈述
  • 在模块几个功能喜欢asttokenizerparser等。


 类似资料:
  • 错误处理 有些方法通通过参数返回 error 的引用,使用这样的方法时应当检查方法的返回值,而非 error 的引用。 推荐: NSError *error = nil; if (![self trySomethingWithError:&error]) { // Handle Error } 此外,一些苹果的 API 在成功的情况下会对 error 参数(如果它非 NULL)写入垃圾值(

  • 我在做一个春靴项目。我正在检查这篇文章中提供的类名为ExceptionHandlerController的代码,并在我的项目中试用了它。它可以工作,但是对于状态代码为400或500系列的错误,我需要包括状态代码。当我在browser address字段中尝试一个简单的无效url时,视图页面error.jsp确实会呈现,但是状态代码没有根据模型信息被访问。我已经包含了HttpServletRespo

  • 问题内容: 我对Swift的了解还不够多,但是我注意到的一件事是没有例外。那么如何在Swift中进行错误处理呢?有没有人发现任何与错误处理相关的信息? 问题答案: 斯威夫特2&3 Swift 2中的情况有所变化,因为有了新的错误处理机制,该机制与异常有些相似,但在细节上有所不同。 1.指示错误可能性 如果函数/方法想要表明它可能抛出错误,则应包含这样的关键字 注意:函数没有实际抛出的错误类型的规范

  • 大部分错误并没有严重到需要程序完全停止执行。有时,一个函数会因为一个容易理解并做出反应的原因失败。例如,如果尝试打开一个文件不过由于文件并不存在而操作失败,这时我们可能想要创建这个文件而不是终止进程。 回忆一下第二章 “使用 Result 类型来处理潜在的错误” 部分中的那个 Result 枚举,它定义有如下两个成员,Ok 和 Err: T 和 E 是泛型类型参数;第十章会详细介绍泛型。现在你需要

  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 错误处理(error handling)是处理可能发生失败情况的过程。例如读取一个文件失败,然后继续使用这个失效的输入显然是有问题的。错误处理允许我们以一种显式的方式来发现并处理这类错误,避免了其余代码发生潜在的问题。 有关错误处理的更多内容,可参考官方文档的错误处理的章节。