Swift 中的“try”关键字有何用途?
What is the purpose of the `try` keyword in Swift?
在你指尖止痒之前,我已经明白了:
- 如何以及何时使用
try
关键字
try
、try?
和 try!
关键字之间的区别
我想了解的是,使用朴素的 try
关键字给我(以及您和我们所有人)带来的好处不仅仅是让编译器诊断安静下来。我们已经在 do
的范围内,并且编译器清楚地知道需要 try
,而且我(还)看不出 [=11] 的位置可能存在一些歧义=] 需要着陆。那么为什么编译器不能在没有关键字显式出现的情况下安静地做正确的事情呢?
关于该语言试图增强人类可读性的可能性,已经有相当多的讨论(如下)。我想我们需要 Swift 语言设计者之一的意见来确定这是否属实。即使我们有,它是否明智也值得商榷 and/or 已经成功了。所以让我们暂时把它放在一边。未修饰 try
关键字的存在是否解决了 除了 加强人类可读性之外的一些问题?
经过长时间的富有成效的讨论(链接在本页的其他地方)……
简而言之,答案是否定的,除了加强可读性之外没有其他目的,但事实证明,可读性的胜利比我意识到的更重要。
try
关键字应被视为类似于(但不等同于)if
和 goto
的组合。尽管 try
没有指示编译器做任何它无法推断它应该做的事情,但没有人会争辩说 if
或 goto
应该是不可见的。这让 try
对于来自其他语言的人来说有点奇怪 — 但并非没有道理。
Objective C 程序员可能很难理解这一点,因为他们习惯于假设他们所做的几乎所有事情都可能引发异常。当然,Objective C 异常与 Swift 错误有很大不同,但有意识地知道这一点与代谢它并无意识地知道它是不同的。
同样,如果您的直觉立即告诉您,在大多数情况下,就风格而言,do
子句中可能应该只有一个失败操作,可能很难看出 [= =10=] 添加。
在你指尖止痒之前,我已经明白了:
- 如何以及何时使用
try
关键字 try
、try?
和try!
关键字之间的区别
我想了解的是,使用朴素的 try
关键字给我(以及您和我们所有人)带来的好处不仅仅是让编译器诊断安静下来。我们已经在 do
的范围内,并且编译器清楚地知道需要 try
,而且我(还)看不出 [=11] 的位置可能存在一些歧义=] 需要着陆。那么为什么编译器不能在没有关键字显式出现的情况下安静地做正确的事情呢?
关于该语言试图增强人类可读性的可能性,已经有相当多的讨论(如下)。我想我们需要 Swift 语言设计者之一的意见来确定这是否属实。即使我们有,它是否明智也值得商榷 and/or 已经成功了。所以让我们暂时把它放在一边。未修饰 try
关键字的存在是否解决了 除了 加强人类可读性之外的一些问题?
经过长时间的富有成效的讨论(链接在本页的其他地方)……
简而言之,答案是否定的,除了加强可读性之外没有其他目的,但事实证明,可读性的胜利比我意识到的更重要。
try
关键字应被视为类似于(但不等同于)if
和 goto
的组合。尽管 try
没有指示编译器做任何它无法推断它应该做的事情,但没有人会争辩说 if
或 goto
应该是不可见的。这让 try
对于来自其他语言的人来说有点奇怪 — 但并非没有道理。
Objective C 程序员可能很难理解这一点,因为他们习惯于假设他们所做的几乎所有事情都可能引发异常。当然,Objective C 异常与 Swift 错误有很大不同,但有意识地知道这一点与代谢它并无意识地知道它是不同的。
同样,如果您的直觉立即告诉您,在大多数情况下,就风格而言,do
子句中可能应该只有一个失败操作,可能很难看出 [= =10=] 添加。