A method of translating computer program code from a first language representation into a second language representation, the method comprising: translating translatable instructions of an input stream in the first language representation into an output stream in the second language representation; identifying an unresolvable code in the input stream which a translator is unable to translate from the first language representation into the second language representation; and placing at least one second language representation instruction in the output stream responsive to identifying the unresolvable code in the input stream, wherein: the placed at least one second language representation instruction is one of an exception handling instruction (1001, 1003), an exception handler or an exception throwing instruction (409, 1002); and said placing comprises placing (409, 909, 908) the at least one second language representation instruction in a location in the output stream where the unresolvable code in the input stream would have been placed in the output stream had the unresolvable code been a translatable instruction or where a method containing the unresolvable code in the input stream would have been placed in the output stream had the entire method been translatable or where a basic block containing the unresolvable code in the input stream would have been placed in the output stream had the entire basic block been translatable. translating translatable instructions of an input stream in the first language representation into an output stream in the second language representation; identifying an unresolvable code in the input stream which a translator is unable to translate from the first language representation into the second language representation; and placing at least one second language representation instruction in the output stream responsive to identifying the unresolvable code in the input stream, wherein: the placed at least one second language representation instruction is one of an exception handling instruction (1001, 1003), an exception handler or an exception throwing instruction (409, 1002); and said placing comprises placing (409, 909, 908) the at least one second language representation instruction in a location in the output stream where the unresolvable code in the input stream would have been placed in the output stream had the unresolvable code been a translatable instruction or where a method containing the unresolvable code in the input stream would have been placed in the output stream had the entire method been translatable or where a basic block containing the unresolvable code in the input stream would have been placed in the output stream had the entire basic block been translatable. the placed at least one second language representation instruction is one of an exception handling instruction (1001, 1003), an exception handler or an exception throwing instruction (409, 1002); and said placing comprises placing (409, 909, 908) the at least one second language representation instruction in a location in the output stream where the unresolvable code in the input stream would have been placed in the output stream had the unresolvable code been a translatable instruction or where a method containing the unresolvable code in the input stream would have been placed in the output stream had the entire method been translatable or where a basic block containing the unresolvable code in the input stream would have been placed in the output stream had the entire basic block been translatable.