我想在我的JS代码中抛出一些东西,我希望它们是instanceof Error,但我也想让它们成为别的东西.
在Python中,通常会有一个子类Exception.
在JS中做什么是合适的?
我想编写一个常见的错误处理程序,它将捕获在任何代码实例上故意抛出的自定义错误.
当我throw new Error('sample')在下面的代码中做了
try {
throw new Error({'hehe':'haha'});
// throw new Error('hehe');
} catch(e) {
alert(e);
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
日志在Firefox中显示,Error: [object Object]我无法解析该对象.
对于第二个throw,日志显示为:Error: hehe
而当我这样做的时候
try {
throw ({'hehe':'haha'});
} catch(e) {
alert(e);
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
控制台显示为:Object { hehe="haha"}其中我能够访问错误属性.
有什么不同?
是否在代码中看到了差异?像字符串一样只是作为字符串和对象传递给对象,但语法会有所不同吗?
我没有探索过抛出错误对象......我只是抛出了字符串.
还有除上述两种方法之外的其他方法吗?
我有一个JSON请求,我发布到HTTP URL.
如果这被视为400其中requestedResource场存在,但"Roman"对于这方面的无效值?
[{requestedResource:"Roman"}]
Run Code Online (Sandbox Code Playgroud)
如果这被视为400其中"blah"场完全不存在吗?
[{blah:"Roman"}]
Run Code Online (Sandbox Code Playgroud) 我需要从一些php本机函数中捕获一些警告,然后处理它们.
特别:
array dns_get_record ( string $hostname [, int $type= DNS_ANY [, array &$authns [, array &$addtl ]]] )
Run Code Online (Sandbox Code Playgroud)
当DNS查询失败时,它会发出警告.
try/ catch不起作用,因为警告不是例外.
我现在有2个选择:
set_error_handler 看起来有点矫枉过正,因为我必须使用它来过滤页面中的每个警告(这是真的吗?);
调整错误报告/显示,以便这些警告不会回显到屏幕,然后检查返回值; 如果是false,则没有找到主机名的记录.
这里的最佳做法是什么?
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:1000:11)
at Process.ChildProcess._handle.onexit (child_process.js:791:34)
Run Code Online (Sandbox Code Playgroud)
作者说明:此错误的许多问题鼓励我发布此问题以供将来参考.
相关问题:
如果进程的退出状态为0,则认为该进程已在Linux中正确完成.
我已经看到分段错误经常导致退出状态为11,但我不知道这是否只是我工作的惯例(那些失败的应用程序都是内部的)或标准.
Linux中的进程是否有标准退出代码?
我经常看到有关如何except: pass阻止使用的其他Stack Overflow问题的评论.为什么这么糟糕?有时我只是不在乎错误是什么,我想继续使用代码.
try:
something
except:
pass
Run Code Online (Sandbox Code Playgroud)
为什么使用except: pass块坏?是什么让它变坏?是因为我pass出错了还是我except有错误?
python error-handling exception-handling exception try-catch
尝试使用Web套接字传递错误消息时遇到问题.我可以复制我面临的问题,JSON.stringify以迎合更广泛的受众:
// node v0.10.15
> var error = new Error('simple error message');
undefined
> error
[Error: simple error message]
> Object.getOwnPropertyNames(error);
[ 'stack', 'arguments', 'type', 'message' ]
> JSON.stringify(error);
'{}'
Run Code Online (Sandbox Code Playgroud)
问题是我最终得到一个空对象.
浏览器
我首先尝试离开node.js并在各种浏览器中运行它.Chrome版本28给了我相同的结果,有趣的是,Firefox至少做了一次尝试,但遗漏了消息:
>>> JSON.stringify(error); // Firebug, Firefox 23
{"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"}
Run Code Online (Sandbox Code Playgroud)
替换功能
然后我查看了Error.prototype.它表明原型包含诸如toString和toSource之类的方法.知道函数不能被字符串化,我在调用JSON.stringify时包含了一个replacer函数来删除所有函数,但后来意识到它也有一些奇怪的行为:
var error = new Error('simple error message');
JSON.stringify(error, function(key, value) {
console.log(key === ''); // true (?)
console.log(value === error); // true …Run Code Online (Sandbox Code Playgroud) 我正在编写一个shell脚本,需要检查是否已安装终端应用程序.我想使用TRY/CATCH命令来执行此操作,除非有更简洁的方法.
错误信息:
\n\nRun Code Online (Sandbox Code Playgroud)error: externally-managed-environment\n\n\xc3\x97 This environment is externally managed\n\xe2\x95\xb0\xe2\x94\x80> To install Python packages system-wide, try apt install\n python3-xyz, where xyz is the package you are trying to\n install.\n\n If you wish to install a non-Debian-packaged Python package,\n create a virtual environment using python3 -m venv path/to/venv.\n Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make\n sure you have python3-full installed.\n\n If you wish to install a non-Debian packaged Python application,\n it may be easiest to use pipx install xyz, which will manage …