Linux? Probably another bug. Try this: unittest { import core.exception : UnicodeException; void f() { string ret; int i = -1; ret ~= i; } try { f(); } catch(UnicodeException e) { assert(e.msg == "Invalid UTF-8 sequence"); } }