Articles of 未处理exception

ExceptionNotifier常量未初始化Rails 3

我已经阅读了许多关于这个网站的问题,以及ExceptionNotifier的GitHub文档,以及它在Rails 3中的实现,我不知道为什么它在我的生产服务器上不适用于我。 在我的本地计算机(Mac)上,它在生产环境中完美工作。 但是,当我用capistrano部署并使用独angular兽运行应用程序后,我的独angular兽日志抱怨在我的环境/ production.rb文件中有一个uninitialized constant ExceptionNotifier ,即使我的本地机器似乎认为它没有问题。 我已经尝试过两种实现: gem 'exception_notification', :require => 'exception_notifier'和gem 'exception_notification_rails3', :require => 'exception_notifier' 。 两者都抛出这个错误。 这是我的production.rb Rl4::Application.configure do # code omitted # Enable ExceptionNotifier, having it ignore its default exceptions config.middleware.use ExceptionNotifier, sender_address: 'reports@ctatechs.com', exception_recipients: 'brice@ctatechs.com', ignore_exceptions: ExceptionNotifier.default_ignore_exceptions end 这是我的Gemfile source 'https://rubygems.org' # lots omitted gem 'exception_notification_rails3', :require => 'exception_notifier' […]

CPU上下文会被ptrace中断,用户空间堆栈还是内核堆栈?

在Linux x86_64上,当我使用ptrace来停止进程时,所有线程的CPU上下文会被保存,还是只保存进程的CPU上下文? 进程的用户空间堆栈或内核堆栈上的上下文是什么? 或者别的地方? 还是多份? 对于其他情况(而不是ptrace),哪里可以中断(包括exception和系统调用)CPU上下文保存,内核堆栈,用户空间堆栈或其他地方? ptrace是一个中断吗? 更新 看来,ptrace的上下文pt_regs_x86_t,保存的位置是由程序员决定的。 但是内核是否也会为被中断的上下文存储一个副本?

u-boot中的exception向量地址

我的平台是iMX28 + u-boot-2013.10 + Linux-3.12.10。 据我了解,ARMexception向量应该从0x00000000开始加载到物理地址中。 我的u-boot镜像加载到DDR2存储器的0x40000100中,iMX28的静态RAM位于地址0x00000000 。 start.S中的代码如下: #ifdef CONFIG_SYS_DV_NOR_BOOT_CFG .globl _start _start: .globl _NOR_BOOT_CFG _NOR_BOOT_CFG: .word CONFIG_SYS_DV_NOR_BOOT_CFG b reset #else .globl _start _start: b reset #endif #ifdef CONFIG_SPL_BUILD /* No exception handlers in preloader */ ldr pc, _hang ldr pc, _hang ldr pc, _hang ldr pc, _hang ldr pc, _hang ldr pc, _hang […]

无法findexception的来源,以及它是什么样的exception

我有一个在cron定期运行的服务器上的python刮板。 有时它会崩溃,但我不知道是什么让它崩溃,崩溃的原因是因为没有任何与日志中的exception相关:既不提及错误,也不提供堆栈跟踪。 logging器是这样设置的: logging.basicConfig(filename="log.log", level=logging.INFO) 但是在例外情况下,无论如何都必须login到日志中,是不是这样? 问题是,我怎样才能findexception的来源。

pythonexception中包含的errnos是否与“linux / errno.h”中的errnos相同?

据我所知,pythonexception返回的大部分errnos与“linux / errno.h”中的errnos相同。 但有时候,事情并不像我所期望的那样: 例如,当一个套接字连接抛出一个socket.timeoutexception时,返回的errno应该是110,然而,它的errno总是为None : try: address = ('8.8.8.8', 12345) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) s.connect(address) except EnvironmentError as e: print e.errno # None print e.strerror # "time out" 其次,当一个地址相关的exception被抛出时,errno将是负数,但是linux / errno.h中的errnos在1到133之间: try: address = ('xxxxxxx', 12345) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(address) except socket.gaierror, v: print v[0] # -5 在这种情况下,将打印-5。 我对所有这些errnos感到困惑。 🙁

明确捕获和处理的exception是否会切换到内核模式?

从操作系统的书中,我了解到exception(如算术溢出,未定义的指令,无效的内存访问)将导致CPU从用户模式切换到内核模式,以便操作系统可以处理exception 在高级编程语言中,我们可以通过使用try和catch以及Java和Python中类似的结构来捕获和处理程序中的默认(如上面提到的那样)或程序中的自定义exception(例如C ++)。 我注意到在这种情况下在用户程序中给出exception处理程序。 通过在用户程序中显式捕获和处理exception, 将默认的exception仍然会导致CPU从用户模式切换到内核模式,以便操作系统可以处理exception? 自定义的exception还会导致cpu从用户模式切换到内核模式,这样操作系统可以处理exception吗? 谢谢! (如果需要特定操作系统,那么Linux)

如果外部命令的输出是废话,最好抛出exception?

我正在开发一个C#实用工具类,它通过SSH在Linux服务器上运行一个外部命令(我正在使用SharpSSH ;我喜欢它,我推荐它),并根据命令的输出返回一些有意义的信息。 前面提到的输出中的某个地方是一个不应超出某个范围的整数,但是我想阻止这种不太可能的可能性。 接收的数字实际上超出范围是什么例外是更适当的扔? 我在想ArgumentOutOfRangeException ,但这不是一个真正的参数。 自动填写不会给我任何好的候选人。 有什么build议么?

发生了什么事在Linux死亡Java线程?

我的项目中有一个NullPointerException,我想评估这个问题的严重性。 在线程完成它的任务之前抛出exception,无论如何将会死亡。 我的代码没有抓住这个例外,所以线程已经死了。 这是一个简单的模拟情况: public class Test extends Thread { public static void main(String[] args) throws InterruptedException { Test thread = new Test(); thread.start(); while(true) { System.out.println("I'm still here!"); Thread.sleep(1000); } } public void run() { String s = null; int len = s.length(); // causes NullPinterException } } 我的问题是:现在会发生什么事情发生在这个可怜的线程? 它的linux文件描述符被释放了吗? 在这种types的代码中是否会出现任何稳定性或内存问题?

如何阻止Ctrl-C使用jruby杀死产生的进程?

我有一个ruby程序,产生新的进程。 即使按Ctrl-C,我也希望这些能够继续存在。 为了做到这一点,我试图陷入INT,但是,这并没有帮助。 下面的程序每次按下Enter键都会启动一个xeyes,如果你写了任何东西就退出,如果你按下Ctrl-C然后返回,应该退出。 如果我以正常的方式退出,那么Xeyes就会生存下来。 如果我按下Ctrl-C,则Xeyes会死亡。 跟踪Xeyes,它确实收到一个SIGINT,而不是SIGHUP。 我能做些什么来保持我的xeyes活着? 该程序: #!/usr/bin/jruby require 'readline' keep_at_it = true trap("INT") { puts "\nCtrl-C!" ; keep_at_it = false } while (keep_at_it) do line = Readline.readline("Enter for new xeyes, anything else to quit: ", true) if (line.length == 0 && keep_at_it == true) Thread.new { system("nohup xeyes >/dev/null 2>/dev/null") } else […]

处理由于exception而展开的C ++析构函数中的pthread取消点

我试图实施一个范围守卫类,并遇到了Linux上取消点的问题。 从我发现的情况来看,Linux在exception情况下实现了pthread取消,其中exception不能在用户的catch块中处理(即必须重新抛出)。 这导致下面的示波器防护实现的问题,试图忽略其相关函数可能抛出的任何exception: #include <pthread.h> #include <stdio.h> #include <unistd.h> #include <functional> struct scope_guard { template <typename T> scope_guard(T func) : function_(func) {} ~scope_guard() { try { function_(); } catch (…) {} } std::function<void()> function_; }; extern "C" { void* thread_func(void*) { try { scope_guard guard( [](void) { // wait for a cancellation event while (true) […]