编辑“︁
Template:TryError/doc
”︁
跳转到导航
跳转到搜索
这是
TryError
模板的
文档页面
。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{NoteTA/MediaWiki}}{{Documentation subpage}}<!-- 在本行下編輯模板說明 --> {{High-use|10131}} == 概要 == 本模板實現了try...catch...finally的結構 而若用<nowiki>{{#iferror:}}</nowiki>無法根據錯誤種類來做處不同處理,而若用嵌套解析器,對於部分高開銷操做是不利的,因此提供一個類似程式碼的方式來實現。而考量到[[:en:Template:Try]]模板存在,因此仔不影響使用的情況以TryError命名。 == 參數及使用方法 == <nowiki>{{TryError</nowiki> |<nowiki><可能有錯誤的維基代碼></nowiki> |<nowiki>catch(<錯誤的class>)=<發生對應錯誤的處置></nowiki> |<nowiki>catch=<發生通用錯誤的處置></nowiki> |finally=<無論是否錯誤都會顯示的維基代碼> <nowiki>}}</nowiki> === 模板參數 === {{TemplateDataHeader}} <templatedata> { "params": { "1": { "label": "可能有腳本錯誤的維基代碼", "description": "用來處理腳本錯誤的維基代碼", "example": "{{#expr:0/0}}", "type": "string", "default": null, "autovalue": null, "required": false }, "catch": { "label": "代碼出現其他錯誤的錯誤訊息", "description": "若該代碼出現其他錯誤時才會輸出該錯誤訊息", "example": "出現不明錯誤", "type": "string", "default": null, "autovalue": null, "required": false }, "catch(類型)": { "label": "代碼出現特定類型錯誤的錯誤訊息", "description": "若該代碼出現某個指定類型的錯誤時才會輸出該錯誤訊息,而類型應該在括號裡指定", "example": "出現Lua腳本錯誤", "type": "string", "default": null, "autovalue": null, "required": false }, "finally": { "label": "不論代碼是否有錯都一定會出現的訊息", "description": "若該代碼不論是否有錯都一定會出現的內容", "example": "內容已除錯", "type": "string", "default": null, "autovalue": null, "required": false } }, "description": "本模板用來輸出錯誤訊息到標準輸出,實現了try...catch...finally的結構", "format": "block" } </templatedata> == 範例 == *無錯誤的維基代碼搭配try...catch: <nowiki>{{TryError</nowiki> |<nowiki>無錯誤的維基代碼</nowiki> |<nowiki>catch=</nowiki> <nowiki>}}</nowiki> {{TryError |無錯誤的維基代碼 |catch= }} ---- *移除有錯誤的維基代碼: <nowiki>{{TryError</nowiki> <nowiki>|這些{{#expr:0/0}}有錯誤</nowiki> <nowiki>|catch={{{no error}}}</nowiki> <nowiki>}}</nowiki> ::輸出: :::{{TryError |這些{{#expr:0/0}}有錯誤 |catch={{{no error}}} }} ---- *有錯誤的維基代碼: <nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> ::輸出: :::{{#expr:0/0}}{{link-wd|Q0/0}} ---- *有錯誤的維基代碼搭配try...catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch=</nowiki> <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch= }} ---- *try...catch...finally <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}{{User 超電磁炮|level=1/0|name=零除錯誤|call=除錯}}{{Topic:Xo1mzbojtxmiusgl}}{{模板1}}</nowiki> |<nowiki>catch=發生{{{message}}}錯誤!</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}}{{User 超電磁炮|level=1/0|name=零除錯誤|call=除錯}}{{Topic:Xo1mzbojtxmiusgl}}{{模板1}} |catch=發生{{{message}}}錯誤! |finally=結束 }} ---- *try並catch 「scribunto-error」錯誤和一般catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)=發生{{{message}}}錯誤!</nowiki> |<nowiki>catch=發生{{{message}}}錯誤!</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)=發生{{{message}}}錯誤! |catch=發生{{{message}}}錯誤! |finally=結束 }} ---- *try並提供空的一般catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |catch= |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch= |finally=結束 }} ---- *try並throw: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)={{{throw}}}</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)={{{throw}}} |finally=結束 }} ---- *try並throw其他錯誤: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)={{參數|throw|foo(throw其他錯誤)}}</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)={{參數|throw|foo(throw其他錯誤)}} |finally=結束 }} ---- *巢狀try...catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}{{TryError|{{#expr:0/0}}|catch={{參數|throw|foo(throw其他錯誤)}} }}</nowiki> |<nowiki>catch(foo)=接到foo錯誤</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}}{{TryError|{{#expr:0/0}}|catch={{參數|throw|foo(throw其他錯誤)}} }} |catch(foo)=接到foo錯誤 |finally=結束 }} ---- *未能提供匹配的錯誤catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(foo)=接到foo錯誤</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(foo)=接到foo錯誤 |finally=結束 }} == 技術限制 == 與#iferror一樣,本模板無法處理來自擴展標籤(如[[Help:数学公式|<nowiki><math>...</math></nowiki>]])的錯誤 <nowiki>{{#iferror:<math>\你好</math>}}</nowiki> ::輸出 :::{{#iferror:<math>\你好</math>}} ---- <nowiki>{{TryError</nowiki> <nowiki>|<math>\你好</math></nowiki> <nowiki>|catch={{{no error}}}</nowiki> <nowiki>}}</nowiki> ::輸出 :::{{TryError |<math>\你好</math> |catch={{{no error}}} }} == 注意事项 == == 模板编辑说明 == == 參見 == <includeonly>{{Sandbox other||<!-- 本行下加入模板的分類 --> }}</includeonly>
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
模板
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息