Tratar exception usando uma linha especifica do erro

Bom dia,

Estou trabalhando em um sistema que um cliente android envia dados para um webservice,
São enviados dados de 3 tabelas, em duas delas os dados são enviados sem problemas,
na terceira os dados são enviados corretamente, mas uma exception é retornada:

08-08 09:05:44.848: W/System.err(724): java.lang.NullPointerException
08-08 09:05:44.858: W/System.err(724): 	at org.ksoap2.transport.ServiceConnectionSE.getResponseProperties(ServiceConnectionSE.java:85)
08-08 09:05:44.858: W/System.err(724): 	at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:167)
08-08 09:05:44.858: W/System.err(724): 	at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:96)
08-08 09:05:44.858: W/System.err(724): 	at br.com.comboio.ws.RequisicaoWS.inserir(RequisicaoWS.java:47)
08-08 09:05:44.866: W/System.err(724): 	at br.com.comboio.SincronizacaoActivity$2$1.run(SincronizacaoActivity.java:145)
08-08 09:05:44.866: W/System.err(724): java.lang.RuntimeException: ERRO: null
08-08 09:05:44.876: W/System.err(724): 	at br.com.comboio.ws.RequisicaoWS.inserir(RequisicaoWS.java:56)
08-08 09:05:44.966: W/System.err(724): 	at br.com.comboio.SincronizacaoActivity$2$1.run(SincronizacaoActivity.java:145)

O maior problema é que as vezes a solicitação completa é enviada com sucesso e as vezes essa exception aparece.
Quando ela aparece apesar dos dados terem sido enviados corretamente o código para de ser executado, e o campo que verifica se o dado já foi enviado para o servidor fica null,
quando o usuário o envia novamente os dados da tabela ficam duplicados…

Meu método de para chamar a sincronização na activiy:

//Botão para enviar as informações para o servidor.
		Button btnDescarregar = (Button) findViewById(R.id.btnDescarregar);
		btnDescarregar.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				pdAguarde = ProgressDialog.show(SincronizacaoActivity.this, "SINCRONIZAÇÃO", "ENVIANDO DADOS. AGUARDE...");
				try {
					new Thread(){
						public void run() {
							//if(Util.verificaConexaoWIFI(SincronizacaoActivity.this)){
								try {
									codigo_empresa = confDao.getEmpresa();
									ControleCombustivelWS controleWS = new ControleCombustivelWS();
									AbastecimentoVeiculoWS abastecimentoWS = new AbastecimentoVeiculoWS();
									RequisicaoWS requisicaoWS = new RequisicaoWS();
									
									Timestamp envio = new Timestamp(new Date(System.currentTimeMillis()).getTime());
									
									ControleCombustivelDAO controleDAO = new ControleCombustivelDAO(SincronizacaoActivity.this);
									ControleCombustivelWS.inserir(controleDAO.listaControles(), codigo_empresa);
									controleDAO.atualizaEnvioServidor(envio);
									ControleCombustivel controleCombustivel = new ControleCombustivel();
									controleDAO.excluir(controleCombustivel);
									
									AbastecimentoVeiculoDAO abastecimentoDAO = new AbastecimentoVeiculoDAO(SincronizacaoActivity.this);
									AbastecimentoVeiculoWS.inserir(abastecimentoDAO.listaAbastecimentos(codigo_empresa), codigo_empresa);
									abastecimentoDAO.atualizaEnvioServidor(envio);
									AbastecimentoVeiculo abastecimentoVeiculo = new AbastecimentoVeiculo();
									abastecimentoDAO.excluir(abastecimentoVeiculo);
									
									RequisicaoDAO requisicaoDAO = new RequisicaoDAO(SincronizacaoActivity.this);
									//O problema ocorre aqui
                                                                        RequisicaoWS.inserir(requisicaoDAO.listaRequisicoes(codigo_empresa), codigo_empresa);
									requisicaoDAO.atualizaControleEnvioServidor(envio);
									Requisicao requisicao = new Requisicao();
									requisicaoDAO.excluir(requisicao);
									
									enviaMessageDialogThread("COMBOIO", "INFORMAÇÕES ENVIADAS COM SUCESSO");
									
								} catch (Exception e) {
									enviaMessageDialogThread("ERRO","HOUVE UM ERRO NA SINCRONIZAÇÃO. \n DETALHES: " + e.getMessage());
								}
							//}else{
							//	enviaMessageDialogThread("COMBOIO", "NÃO FOI POSSIVEL CONECTAR A REDE");
							//}
							pdAguarde.dismiss();
						}						
					}.start();
					
				} catch (Exception e) {
					enviaMessageDialogThread("ERRO","HOUVE ERRO NA SINCRONIZAÇÃO. \n DETALHES: " + e.getMessage());
				}
			}
		});

e minha classe de envio de dados

public class RequisicaoWS {
	public static String inserir(List<Requisicao> requisicoes, int codigo_empresa) {
		String URL;
		if (codigo_empresa == 1) {
			URL = "http://endereco servidor1/axis2/services/RequisicaoWS?wsdl";
		}else{
			URL = "http://endereco servidor2/axis2/services/RequisicaoWS?wsdl";
		}
		String OPERATION="inserir";
		String NAMESPACE="http://ws.webservicecomboio";
		String SOAP_ACTION="inserir";
		
		try {
			Util.verificaVersaoSDK();
			
			XStream xStream = new XStream(new DomDriver());
			xStream.setMode(XStream.NO_REFERENCES);
			xStream.processAnnotations(Requisicao.class);
			String requisicao = xStream.toXML(requisicoes);
			
			SoapObject request = new SoapObject(NAMESPACE, OPERATION);
			request.addProperty("requisicaoXML", requisicao);
			request.addProperty("codigo_empresa", codigo_empresa);
			
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
			envelope.setOutputSoapObject(request);

			try {
				HttpTransportSE httpTransport = new HttpTransportSE(URL);
				httpTransport.call(SOAP_ACTION, envelope);
				synchronized (httpTransport) {
					httpTransport.wait(120000);
				}
				SoapPrimitive result = (SoapPrimitive) envelope.getResponse();	
				System.out.println("result::::::::::::::::::::::::" + result);
				return result.toString();
			} catch (Exception e) {
				e.printStackTrace();
				throw new RuntimeException("ERRO: " + e.getMessage());
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("ERRO: " + e.getClass().getName() + ": " + e.getMessage());
		}
	}
}

Queria saber se tem como tratar a exceção usando a linha do erro:
at org.ksoap2.transport.ServiceConnectionSE.getResponseProperties(ServiceConnectionSE.java:85)

A questão é que você está fazendo isso num try/catch.
Todas as exceptions capturadas pelo catch (que sejam compatíveis com a que ele está esperando) farão o processo ser abortado e todas as linhas abaixo da que apresentou a exceção não serão executadas.
Ou seja, se ocorre exceção na linha 10, a partir da linha 11 até o código do catch, nada será executado.

Certo, mas se eu tirar ele lá de dentro e ocorrer uma exceção diferente da que eu postei eu preciso verificar tbm.
Queria tratar a exceção ou conseguir resolver esse problema especifico…

Por isso chama-se capturar (catch).
Você pode usar o instanceof e identificar se é uma exceção oriunda de uma classe que você pode tratar (NullPointerException) ou se é alguma diferente e que você não quer tratar.
Eu isolaria o processo em um método e, então, colocaria a invocação deste método dentro do try. Se o catch capturasse uma exception que é instância de uma exceção que eu queira tratar, então invoco novamente o método, senão, apenas retorno para o processo normal.

try/catch nullpointer é tosco, evite-a checando null.